関数は deferredのwhen
配列を取りません。むしろ、それぞれの遅延オブジェクトを個別の引数として渡します。それはまさにあなたのapply
ためにしていることです。
null
に渡されるのapply
は、それがapply
期待されているからです。最初の引数は、呼び出されたときに関数のコンテキストが設定されるべきものであり、2 番目の引数は常に配列であり、関数が次のように呼び出されるように展開されます。配列内のすべての項目が個別の引数として渡された場合。
その目的のために、when
それが呼び出されているコンテキストに違いはなく、他のものとnull
同じように機能します。私はそれをjQuery自体に渡すことを好みます:
$.when.apply($, tasks).then(function () {
// Whatever
});
きれいに見えると思うので、それは私だけです。それは何の違いもありません。
お使いのブラウザーがネイティブの promise をサポートしている (またはpolyfillを使用している) 場合は、代わりにそのall
メソッドを使用できます。このメソッドは、promise の配列を直接受け取ります。
Promise.all(tasks).then(function (values) {
// "values" is an array, with the results of each of the "tasks"
});