javascript - 如何在两个异步函数完成后运行函数

标签 javascript settimeout

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

[
  function(cb){
    setTimeout(function(){
      cb('one');
    }, 200);
  },
  function(cb){
    setTimeout(function(){
      cb('two');
    }, 100);
  }
]

有没有办法访问时间参数 (200, 100) 并将其总和保存到变量中?

我只想在这两个函数都完成时才执行一个函数

最佳答案

更好的方法是使用 Promise 和 Promise.all :

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

关于javascript - 如何在两个异步函数完成后运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33528945/

相关文章:

javascript - EcmaScript 模块 (JavaScript) 中的延迟导出

javascript - `setTimeout(func, 0)` 和 `setTimeout(func, 1)` 被认为是一样的吗?

javascript - 是否回收了超时/间隔 ID?

javascript - 函数 setTimeout 抛出错误

javascript - package.json 中指定的依赖项

javascript - 在 javascript 中添加两个或多个函数

javascript - 如何将多个结果返回到数组中?

javascript:如何制作具有相同数据的多个组合框

javascript - 将数组作为参数传递给 SetTimeout 回调

jquery - 使用 jquery 中断并重新启动 setTimeOut 事件序列?