假设我有两个(或更多)异步操作 op1
和op2
完成后调用回调函数。在开始之前我最好如何等待两者完成op3
?
我无法将它们嵌套在一起(即首先从 op1
开始,然后在 op2
内部从 op1callback()
开始)
(我当然也不知道其中哪一个将首先完成,但我想这并不重要)
function op1callback {
}
function op2callback {
}
function op3 {
...
}
最佳答案
最简单的方法是保留有关回调状态的标志:
let count = 0;
function callback() {
if(++count === 2) op3();
}
op1(callback); op2(callback);
但从长远来看,让操作返回 promise 可能是有益的,例如:
async function op1() {
// Do some async stuff and *await* that
return "something";
}
那么你可以这样做:
Promise.all(op1(), op2()).then(op3);
关于javascript - 等待多个非嵌套回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285888/