This question already has answers here:
How can I wait for set of asynchronous callback functions?
                            
                                (6个答案)
                            
                    
                2年前关闭。
        

    

假设我有两个(或多个)异步操作op1op2在完成时调用回调函数。如何最好在启动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