Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个异步函数完成后如何运行函数_Javascript_Settimeout - Fatal编程技术网

Javascript 两个异步函数完成后如何运行函数

Javascript 两个异步函数完成后如何运行函数,javascript,settimeout,Javascript,Settimeout,假设我有一个调用setTimeout的函数数组 [ function(cb){ setTimeout(function(){ cb('one'); }, 200); }, function(cb){ setTimeout(function(){ cb('two'); }, 100); } ] 有没有办法访问时间参数(200100)并将其总和保存到变量中 我只想在两个功能都完成时执行一个功能更好的方法是使用承诺和: 您可以通

假设我有一个调用setTimeout的函数数组

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