【问题标题】:Wait for multiple non nested callbacks [duplicate]等待多个非嵌套回调[重复]
【发布时间】:2018-07-11 12:48:29
【问题描述】:

假设我有两个(或更多)异步操作 op1op2 在完成时调用回调函数。在开始 op3 之前,我如何最好地等待两者都完成?
无法将它们相互嵌套(即首先从 op1 开始,然后在 op1callback() 内部开始 op2
(当然我也不知道哪一个会先完成,但我猜这并不重要)

function op1callback {
}
function op2callback {
}
function op3 {
...
}

【问题讨论】:

    标签: javascript asynchronous callback coding-style


    【解决方案1】:

    最简单的方法是只保留有关回调状态的标志:

    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);
    

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 2017-12-15
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多