等待多个非嵌套回调
Wait for multiple non nested callbacks
假设我有两个(或更多)异步操作 op1
和 op2
在完成时调用回调函数。我如何才能最好地等待两者完成后再开始 op3
?
我 不能 能够将它们嵌套在彼此内部(即首先开始 op1
,然后在 op1callback()
内部开始 op2
)
(我当然也不知道哪一个先完成,但我想这并不重要)
function op1callback {
}
function op2callback {
}
function op3 {
...
}
最简单的方法是只保留有关回调状态的标志:
let count = 0;
function callback() {
if(++count === 2) op3();
}
op1(callback); op2(callback);
但从长远来看,让操作 return 承诺可能是有益的,例如:
async function op1() {
// Do some async stuff and *await* that
return "something";
}
那么你可以这样做:
Promise.all(op1(), op2()).then(op3);
假设我有两个(或更多)异步操作 op1
和 op2
在完成时调用回调函数。我如何才能最好地等待两者完成后再开始 op3
?
我 不能 能够将它们嵌套在彼此内部(即首先开始 op1
,然后在 op1callback()
内部开始 op2
)
(我当然也不知道哪一个先完成,但我想这并不重要)
function op1callback {
}
function op2callback {
}
function op3 {
...
}
最简单的方法是只保留有关回调状态的标志:
let count = 0;
function callback() {
if(++count === 2) op3();
}
op1(callback); op2(callback);
但从长远来看,让操作 return 承诺可能是有益的,例如:
async function op1() {
// Do some async stuff and *await* that
return "something";
}
那么你可以这样做:
Promise.all(op1(), op2()).then(op3);