$ .when.apply返回结果集?

时间:2013-10-01 02:14:26

标签: javascript jquery ajax apply

我想知道在完成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 });

1 个答案:

答案 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