我有一个名为:Test
的服务类
Test
类有一个名为:getMe()
的函数
在getMe
函数中,我有3个等待语句,第二个需要第一个的答案,第三个需要第二个的答案。一个例子:
class Test {
async getMe() {
const res1 = await promise1;
const res2 = await promise2(res1);
const res3 = await promise3(res2);
return res3;
}
}
现在,在我的代码中,我调用这个函数。
const a = new Test();
try{
const res = await a.getMe();
}catch(err){
console.log("error", err);
}
现在,因为在getMe
函数中,我已经在等待promise,它没有优化,因为创建了一个中间的promise。阅读以下内容:"return wait promise"one_answers"return promise"之间的区别
所以,我想知道,如果在getMe
函数中,我不应该为优化编写await
并直接返回promise,那么我的代码怎么写呢?我不想在我的外部代码中调用await
promise1、promise2、promise3,因为那样我就没有一个单独的函数来处理最后的比特,我的代码就会分散。
你认为你的建议是什么?
由于getMe()
内部的promise是相互依赖的(例如promise2
需要promise1
的解析值作为输入参数(,因此您无法在此处真正优化某些内容(除了直接返回最后一个promise(。
如果它们不依赖于其他,那么您当然可以使用Promise.all()
来非顺序地处理它们,返回其promise并在调用函数中等待该promise。
要优化它,唯一能做的就是直接返回promise3
的结果。
class Test {
async getMe() {
const res1 = await promise1;
const res2 = await promise2(res1);
return promise3(res2);
}
}
除此之外,我看不出有任何办法,因为这三个功能是相互依赖的。