2013-01-22 151 views
1

所以说我有$。员额功能的阵列

var pa = [$.post(url0), $.post(url1),......]; 

$.when(pa[0],pa[1],...]) // works as expected 

$.when.apply(pa) // does not work 

回答

1

Function.prototype.apply需要背景作为第一个参数(其用作this参考对象,在被调用的函数)

所以,你可以这样调用它

$.when.apply(null, pa); 

我喜欢用有点“挂羊头卖狗肉”,以避免每次。我们可以调用Function.prototype.bind

var when = Function.prototype.apply.bind(jQuery.when, null); 

现在,我们的确可以称之为

when(pa).done(/* ... */) { } 
1

你应该使用:

$.when.apply($, pa); 

apply的第一个参数是应该调用该函数的上下文(即,在该上下文中意味着什么this e功能)。第二个参数是一个包含函数参数的数组。

1

您忘记了.apply()的第一个参数,它是该函数的thisArg。由于$.when不关心它的this价值,你可以通过任何东西:

$.when.apply(null, pa); 
$.when.apply($, pa); 
相关问题