Deferred の配列を $.when() に渡す
複雑な非同期タスクのセットを扱う場合、次のようにすると便利です。 Deferred オブジェクトの配列を $.when() メソッドに渡して、すべてのタスクが完了したことを通知します。ただし、デフォルトでは、$.when() は個別の Deferred オブジェクトを個別のパラメーターとして想定します。これは、Deferred オブジェクトの数が不明な場合には実用的ではない可能性があります。この記事では、Function.prototype.apply を使用したこの問題の解決策を提供します。
解決策:
Deferred オブジェクトの配列を $.when() に渡すには、次を使用します。 Function.prototype.apply メソッドは次のようになります:
$.when.apply($, my_array).then( ___ );
これにより、Deferred オブジェクトの配列を渡すことができます。 $.when() への単一の引数として。以下のコード例は、このアプローチを示しています。
var deferreds = getSomeDeferredStuff(); $.when.apply($, deferreds).done(function() { $("div").append("<p>All done!</p>"); });
ES6:
ES6 では、スプレッド演算子 (...) の代わりにスプレッド演算子を使用できます。 Function.prototype.apply:
$.when(...my_array).then( ___ );
Note:
.then() メソッドに提供されるハンドラー関数は引数の配列を処理する必要があることに注意することが重要です。各約束の結果を取得します。ハンドラーが必要とする仮パラメータの数は事前に不明である可能性が高いため、ハンドラーはそれに応じて引数配列を処理する必要があります。
以上が遅延オブジェクトの配列を jQuery の `$.when()` に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。