所以说我有一组 $.post 函数
var pa = [$.post(url0), $.post(url1),......];
$.when(pa[0],pa[1],...]) // works as expected
但
$.when.apply(pa) // does not work
所以说我有一组 $.post 函数
var pa = [$.post(url0), $.post(url1),......];
$.when(pa[0],pa[1],...]) // works as expected
但
$.when.apply(pa) // does not work
你应该使用:
$.when.apply($, pa);
的第一个参数apply
是函数应该被调用的上下文(即this
在函数的上下文中意味着什么)。第二个参数是一个包含函数参数的数组。
Function.prototype.apply
需要上下文作为第一个参数(在被调用函数中用作 的引用的对象this
)
所以你可以这样称呼它
$.when.apply( null, pa );
我喜欢每次都使用一点“诡计”来避免这种情况。我们可以Function.prototype.bind
像这样调用
var when = Function.prototype.apply.bind( jQuery.when, null );
现在,我们确实可以调用
when( pa ).done( /* ... */ ) { }