等到所有异步调用完成

时间:2015-11-03 14:15:34

标签: javascript jquery

我在for循环中调用jquery异步调用:

for (var index = 0; index < activeSheets.length; index++) {
          service.getAsync().then(donecallback, failcallback);
}

当我得到完成回调时,基于返回的数据,我需要运行另一个for循环并运行更多的调用,

有没有一个很好的简单方法可以等到所有这些都完成后看看是否全部通过或有些失败?

2 个答案:

答案 0 :(得分:2)

使用jQuery延迟API。 https://api.jquery.com/jquery.when/

它期望多个承诺作为参数。

$.when(promise, promise, promise)
  .done(function success() { })
  .fail(function failure() { })
  .always(function always() { });

如果所有承诺都成功,它就会解决,如果任何承诺失败,它就会失败。

答案 1 :(得分:0)

你可能正在寻找Promise.all(),它会执行所有的承诺并等到所有通过或一个失败。

var asyncs = [];
for (var index = 0; index < activeSheets.length; index++) {
    asyncs.push(service.getAsync());
}
Promise.all(asyncs).then(donecallback, failcallback);
相关问题