【问题标题】:Wait for multiple non nested callbacks [duplicate]等待多个非嵌套回调[重复]
【发布时间】:2018-07-11 12:48:29
【问题描述】:
假设我有两个(或更多)异步操作 op1 和 op2 在完成时调用回调函数。在开始 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);