我想知道在完成ajax调用数组中的所有请求后是否可以返回$ .when.apply($,Requests [])调用的结果?
我用过:
$.when($.ajax(...)).done(function(data){ console.log(data.d); }
这让我可以使用ajax调用的结果。如何将相同的概念应用于$ .when.apply($,Requests [])?我尝试了$.when.apply($, Requests[]).then(function(data?){ console.log(data.d); }
但这不起作用。有什么想法吗?
基本上,我试图运行可变数量的类似ajax调用,并在所有这些调用完成后使用它们的结果。我会很感激正确方向的任何提示!
编辑:澄清 我将Requests []设置为一个包含ajax请求的数组。例如:
var Requests = [];
for (var i = 0; i <= 10; i++){ Requests.push($.ajax({...ajax setup...}));
$.when.apply($, Requests).then(function(...){ do Stuff with the result of all });
答案 0 :(得分:5)
then回调根据传递给它的promise数接收可变数量的参数。
在这种情况下,由于传递了ajax promise,每个参数都是一个包含3个数据,status和jqxhr对象的数组。
因此,您需要使用bellow语法来获取第一个请求的结果。
then(function(result1){
console.log(result[0].d)
})
打印所有请求的结果
then(function (result1) {
$.each(arguments, function (idx, args) {
console.log(args[0]);// in your case args[0].d
})
})
演示:Fiddle