我正在编写一个谷歌内容脚本,我的程序需要向服务器进行大约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);