1

$.post 関数の配列があるとします。

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

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

しかし

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

3 に答える 3

1

.apply()関数のthisArgであるへの最初の引数を忘れました。$.whenの値は気にしないのでthis、何でも渡すことができます。

$.when.apply(null, pa);
$.when.apply($, pa);
于 2013-01-22T08:53:49.593 に答える
1

Function.prototype.apply最初の引数としてコンテキストが必要です(this呼び出された関数で、の参照として機能するオブジェクト)

だからあなたはそれを次のように呼ぶことができます

$.when.apply( null, pa );

私は毎回それを避けるために少し「トリッケリー」を使うのが好きです。Function.prototype.bind私たちは次のように呼び出すことができます

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

今、私たちは確かに呼び出すことができます

when( pa ).done( /* ... */ ) { }
于 2013-01-22T08:54:05.207 に答える
1

以下を使用する必要があります。

$.when.apply($, pa);

の最初の引数はapply、関数が呼び出されるコンテキスト (つまりthis、関数のコンテキストでの意味) です。2 番目の引数は、関数の引数を含む配列です。

于 2013-01-22T08:53:04.883 に答える