我有一个服务类,名为:Test
该Test
类具有一个名为:getMe()
在该getMe
函数中,我有3个await语句,第二个需要第一个的答案,第三个需要第二个的答案。一个例子:
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
函数中,我已经在等待诺言,由于存在中间诺言,所以尚未对其进行优化。阅读:Difference between `return await promise` and `return promise`
所以,我想知道,如果我不应该在getMe
函数中编写await
进行优化并直接返回promise,那我的代码怎么写?我不想在我的外部代码中调用await
promise1,promise2,promise3,因为那样我就没有一个函数来处理最后的位,并且我的代码会分散。
您怎么看,可能是您的建议吗?
答案 0 :(得分:2)
由于getMe()
中的承诺彼此依赖(例如promise2
需要将promise1
的解析值作为输入参数),因此您无法在此处真正优化某些内容(除了直接返回最后的承诺)。
如果它们不依赖于其他对象,则可以肯定地使用Promise.all()
以便对其进行非顺序处理,返回其诺言并在调用函数中等待该诺言。
答案 1 :(得分:1)
您唯一可以做的优化就是直接返回promise3
的结果。
class Test {
async getMe() {
const res1 = await promise1;
const res2 = await promise2(res1);
return promise3(res2);
}
}
除此之外,我看不到任何方式,因为这三个功能相互依赖。