javascript在调用者和被调用者中等待



我有一个名为: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,那么我的代码怎么写呢?我不想在我的外部代码中调用awaitpromise1、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);
}
}

除此之外,我看不出有任何办法,因为这三个功能是相互依赖的。

最新更新