jquery – 数组中的多个ajax调用,完成后处理回调

前端之家收集整理的这篇文章主要介绍了jquery – 数组中的多个ajax调用,完成后处理回调前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我以前在jQuery中使用过承诺,但是我无法将其应用于这种情况.我更喜欢使用$.when()和$.done()方法来实现这一点.

根据我的理解,我需要构建一个记录请求的$.Deferred对象,当这些请求完成时 – 触发回调.在我下面的代码中,回调是在ajax请求之前触发,而不是之后 – 也许我只需要一些睡眠

我知道我的代码是不完整的,我一直在努力应用它添加for循环.

http://jsfiddle.net/whiteb0x/MBZEu/

var list = ['obj1','obj2','obj3','obj4','obj5'];
var callback = function() {
  alert("done");
};
var requests = [];

var ajaxFunction = function(obj,successCallback,errorCallback) {
  for(i = 0; i < list.length; i++) {
    $.ajax({
      url: 'url',success: function() {
            requests.push(this);
      }
    });
  }
};
$.when($.ajax(),ajaxFunction).then(function(results){callback()});

解决方法

$.when的参数应该是$.ajax的返回值,它也不需要单独调用 – 这是没有意义的.你想要这样的东西:
for (i = 0; i < list.length; i++) {
   requests.push($.ajax(...));
}
$.when.apply(undefined,requests).then(...)

需要的原因是因为$.可以接受多个参数,而不是一个参数数组.应用扩展到:

$.when(requests[0],requests[1],...)

这也假设可以按任何顺序完成请求.

http://jsfiddle.net/MBZEu/4/ – 注意在所有成功消息之后,“完成”已记录到控制台.

原文链接:https://www.f2er.com/jquery/180452.html

猜你在找的jQuery相关文章