2

嗨,伙计们,我需要一些帮助,我的坏想法:

我有一个对象:

 var ch =  [function1(), function2(), function3(), function4()];

函数示例:

function function1()
            { 

                    return $.ajax({
                        type: "GET",
                        url:url,
                        dataType:"jsonp",
                        success: function(data){}
                    });
            }

我需要以某种方式在这里传递这个对象:

$.when(function1(), function2(), function3(), function4()).done({
  function(data1, data2, data3, data4)
});

当然这个想法是错误的:

$.when(ch) -- which is wrong 

你能帮忙吗?或者也许这是一种错误的做法?你能给我建议吗?

谢谢 !

4

1 回答 1

4

我认为您的意思是说您想Deferred在数组中的所有项目都已解决时执行一项操作。使用该apply方法非常容易,该方法使用数组的成员作为给函数的参数:

$.when.apply($, ch).done(function(data1, data2, data3, data4) {

有关该方法的更多信息,请参阅applyMDN 文档。归结起来,第一个参数是调用的上下文(即this函数内部的内容;这里你想将其保留为$jQuery 对象),第二个参数是一个数组,其成员将作为函数的参数应用.

于 2011-12-15T21:11:56.210 回答