首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >知道数组的jqXHR何时全部完成

知道数组的jqXHR何时全部完成
EN

Stack Overflow用户
提问于 2018-12-21 22:17:33
回答 1查看 30关注 0票数 0

我正在尝试运行一些代码,一旦数组的所有jqXHR元素都完成(成功或失败)。

你可以在这里看到完整的代码:http://jsfiddle.net/Lkjcrdtz/4/

基本上,我期望从这里开始使用always钩子:

代码语言:javascript
复制
$.when
    .apply(undefined, reqs)
    .always(function(data) {
      console.log('ALL ALWAYS', data);
    });

当堆积在那里的所有请求都已成功或失败时运行。目前,您可以在控制台中观察到较早地记录了ALL ALWAYS

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-21 23:15:25

现代浏览器的一个简单解决方案是结合使用较新的fetch() API和Promise.all()

代码语言:javascript
复制
var makeReq = function(url, pos) {
  var finalUrl = url + pos;

  // intentionally make this request a failed one
  if (pos % 2 === 0) {
    finalUrl = "https://jsonplaceholder.typicode.com/423423rfvzdsv";
  }

  return fetch(finalUrl).then(function(resp) {
    console.log('Request for user #', pos);
    //  if successful request return data promise otherwise return something
    //  that can be used to filter out in final results
    return resp.ok ? resp.json() : {error: true, status: resp.status, id: pos }
  })
};

// mock API
var theUrl = "https://jsonplaceholder.typicode.com/users/";
var reqs = [];

for (var i = 1; i <= 5; i++) {
  reqs.push(makeReq(theUrl, i));
}

Promise.all(reqs).then(function(results) {
  console.log('---- ALL DONE ----')
  // filter out good requests
  results.forEach(function(o) {
    if (o.error) {
      console.log(`No results for user #${o.id}`);
    } else {
      console.log(`User #${o.id} name = ${o.name}`);
    }
  })
})

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53886279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档