This question already has answers here:
How can I wait for set of asynchronous callback functions?
(6个答案)
2年前关闭。
假设我有两个(或多个)异步操作
我无法将它们彼此嵌套(即首先在
(我当然也不知道其中哪一个首先要完成,但是我猜那并不重要)
但是从长远来看,让操作返回承诺是有益的,例如:
那么您可以这样做:
(6个答案)
2年前关闭。
假设我有两个(或多个)异步操作
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);
但是从长远来看,让操作返回承诺是有益的,例如:
async function op1() {
// Do some async stuff and *await* that
return "something";
}
那么您可以这样做:
Promise.all(op1(), op2()).then(op3);
09-19 02:33