Javascript 两个异步函数完成后如何运行函数
假设我有一个调用setTimeout的函数数组Javascript 两个异步函数完成后如何运行函数,javascript,settimeout,Javascript,Settimeout,假设我有一个调用setTimeout的函数数组 [ function(cb){ setTimeout(function(){ cb('one'); }, 200); }, function(cb){ setTimeout(function(){ cb('two'); }, 100); } ] 有没有办法访问时间参数(200100)并将其总和保存到变量中 我只想在两个功能都完成时执行一个功能更好的方法是使用承诺和: 您可以通
[
function(cb){
setTimeout(function(){
cb('one');
}, 200);
},
function(cb){
setTimeout(function(){
cb('two');
}, 100);
}
]
有没有办法访问时间参数(200100)并将其总和保存到变量中
我只想在两个功能都完成时执行一个功能更好的方法是使用承诺和:
您可以通过计数的闭包来模拟它
功能输出{
var节点=document.createElement('div');
node.innerHTML=s+'
';
document.getElementById('out').appendChild(节点);
}
变量f=[
函数(cb){setTimeout(函数(){cb('one');},100);},
函数(cb){setTimeout(函数(){cb('two');},200);}
],
useCounter=函数(){
var计数=2;
返回函数{
计数--;
输出(s+“”+计数);
!count&&out('done');
}
}();
f[0](使用计数器);
f[1](使用计数器)代码>
你能让回调函数跟踪它被调用的次数,并在第二次调用时执行所需的代码吗?不。使用承诺:你需要为你想要实现的目标提供更多的上下文。也许你想做的事可以用承诺来解决。
var task1 = new Promise(function(resolve,reject) {
setTimeout(function() {
//do something
resolve();
}, 100);
});
var task2 = new Promise(function(resolve,reject) {
setTimeout(function() {
//do something
resolve();
}, 200);
});
Promise.all([task1, task2]).then(function() {
//will be executed when both complete
});