我有一个名为: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。阅读此内容:Difference between `return await promise` and `return promise`
所以,我想知道,如果在getMe
函数中,我不应该写await
进行优化并直接返回promise,那我的代码该怎么写呢?我不想在外部代码中调用 await
Promise1、Promise2、Promise3,因为这样我就没有一个函数来处理最后的位,并且我的代码将会分散。
您的想法和建议是什么?
最佳答案
由于 getMe()
内的 Promise 相互依赖(例如 promise2
需要 promise1
的解析值作为输入参数),你不能真正优化这里的某些东西(除了直接返回最后一个 promise )。
如果它们不依赖于其他函数,您当然可以使用 Promise.all()
来非顺序地处理它们,返回其 promise 并在调用函数中等待此 promise 。
关于javascript wait 在调用者和被调用者中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62793601/