$.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
Function.prototype.apply
最初の引数としてコンテキストが必要です(this
呼び出された関数で、の参照として機能するオブジェクト)
だからあなたはそれを次のように呼ぶことができます
$.when.apply( null, pa );
私は毎回それを避けるために少し「トリッケリー」を使うのが好きです。Function.prototype.bind
私たちは次のように呼び出すことができます
var when = Function.prototype.apply.bind( jQuery.when, null );
今、私たちは確かに呼び出すことができます
when( pa ).done( /* ... */ ) { }
以下を使用する必要があります。
$.when.apply($, pa);
の最初の引数はapply
、関数が呼び出されるコンテキスト (つまりthis
、関数のコンテキストでの意味) です。2 番目の引数は、関数の引数を含む配列です。