大家好,我需要一些帮助,帮助我的坏思维大脑:
我有一个对象:
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
你能帮忙解决这个问题吗?或者也许这是一种错误的做法? 你能给我建议吗?
谢谢!
最佳答案
我认为您的意思是说您想要在数组中的所有Deferred
项都已解决时执行操作。使用 apply
方法可以非常轻松地实现这一点,该方法使用数组的成员作为传递给函数的参数:
$.when.apply($, ch).done(function(data1, data2, data3, data4) {
参见apply
有关该方法的更多信息,请参阅 MDN 文档。归根结底,第一个参数是调用的上下文(即函数内的 this
;这里您希望将其保留为 $
,即 jQuery 对象)并且第二个是一个数组,其成员将作为函数的参数应用。
关于javascript - js/jquery 传递数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526594/