jquery – .When()和.done()使用带.done的数组

前端之家收集整理的这篇文章主要介绍了jquery – .When()和.done()使用带.done的数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个谷歌内容脚本,我的程序需要向服务器进行大约30次AJAX调用.我正在使用JQuery的.when函数与.apply一起将数组传递给.when函数.我也在使用.done,我希望能够传入一个参数数组,这些参数将从.when函数获取延迟对象.有没有办法做到这一点?这就是我想要做的.
var callback = function(a) {
  console.log("done",a);
};
var requests = [];
var requestArray = [];
  for(i = 0; i < liclass.length; i++) {
  requests.push($.ajax({
      url: liclass[i],success: function() {;
      }
    }));
            var str = "messageArg" + i
        requestArray.push(str)
  }

$.when.apply($,requests).done(function(requestArray){
callback(requestArray)});

解决方法

如果你看一下 examples for $.when,你会看到回调被传递给每个promise的参数.如果该promise来自Ajax调用,那么每个参数都是[data,statusText,jqXHR]形式的数组.

所以你只需迭代参数并提取第一个元素. $.map使这很容易:

$.when.apply($,requests)
  .then(function() {
    return $.map(arguments,function(v) {
      return v[0];
    });
  })
  .done(callback);

猜你在找的jQuery相关文章