js / jquery传递数组项

时间:2011-12-15 21:07:38

标签: javascript jquery jquery-deferred

嗨,大家好,我需要一些帮助,对我脑筋不好的想法:

我有一个对象:

 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 
你能帮忙解决这个问题吗?或者这可能是错误的做法? 你能建议我吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

我认为您的意思是说,当数组中的所有Deferred项都已解决时,您希望执行操作。使用apply方法非常简单,该方法使用数组成员作为赋予函数的参数:

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

有关该方法的详细信息,请参阅MDN文档中的apply。简而言之,第一个参数是调用的上下文(即函数内部将是this;这里你想把它保持为$,jQuery对象),第二个参数是一个数组成员将被用作函数的参数。