Javascript 为什么';t$.when.按预期申请工作
假设我有一个$.post函数数组Javascript 为什么';t$.when.按预期申请工作,javascript,jquery,Javascript,Jquery,假设我有一个$.post函数数组 var pa = [$.post(url0), $.post(url1),......]; $.when(pa[0],pa[1],...]) // works as expected 但是 你应使用: $.when.apply($, pa); apply的第一个参数是调用函数的上下文(即此在函数上下文中的含义)。第二个参数是包含函数参数的数组。您忘记了第一个参数to,即函数的thisArg。由于不关心其this的值,因此可以传递任何内容: $.when.a
var pa = [$.post(url0), $.post(url1),......];
$.when(pa[0],pa[1],...]) // works as expected
但是
你应使用:
$.when.apply($, pa);
apply
的第一个参数是调用函数的上下文(即此
在函数上下文中的含义)。第二个参数是包含函数参数的数组。您忘记了第一个参数to,即函数的thisArg。由于不关心其this
的值,因此可以传递任何内容:
$.when.apply(null, pa);
$.when.apply($, pa);
Function.prototype.apply
需要上下文作为第一个参数(在被调用的函数中用作此
的引用的对象)
所以你可以这样称呼它
$.when.apply( null, pa );
每次我都喜欢用一些“诡计”来避免这种情况。我们可以像这样调用函数.prototype.bind
var when = Function.prototype.apply.bind( jQuery.when, null );
现在,我们确实可以打电话了
when( pa ).done( /* ... */ ) { }
when( pa ).done( /* ... */ ) { }