说我有两个(或多个)异步操作op1
和op2
,它们在完成时调用回调函数。如何最好在启动op3
之前都等待两者完成?
我不能将它们彼此嵌套(即首先在op1
内启动op2
,然后再在op1callback()
内启动function op1callback {
}
function op2callback {
}
function op3 {
...
}
)
(我当然也不知道首先要完成哪些操作,但是我猜那并不重要)
IE.Navigate "http://Mysite/Home/"
While IE.Busy Or IE.readyState < 4: DoEvents: Wend
IE.Document.getElementsByClassName("tbi")(1).Click
答案 0 :(得分: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);