嗨,大家好,我需要一些帮助,对我脑筋不好的想法:
我有一个对象:
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
你能帮忙解决这个问题吗?或者这可能是错误的做法?
你能建议我吗?
谢谢!
答案 0 :(得分:4)
我认为您的意思是说,当数组中的所有Deferred
项都已解决时,您希望执行操作。使用apply
方法非常简单,该方法使用数组成员作为赋予函数的参数:
$.when.apply($, ch).done(function(data1, data2, data3, data4) {
有关该方法的详细信息,请参阅MDN文档中的apply
。简而言之,第一个参数是调用的上下文(即函数内部将是this
;这里你想把它保持为$
,jQuery对象),第二个参数是一个数组成员将被用作函数的参数。