[解決済み] Deferredsの配列を$.when()に渡す
2022-03-22 01:18:52
質問
以下は、その工夫の例です。 http://jsfiddle.net/adamjford/YNGcm/20/
HTMLです。
<a href="#">Click me!</a>
<div></div>
JavaScriptです。
function getSomeDeferredStuff() {
var deferreds = [];
var i = 1;
for (i = 1; i <= 10; i++) {
var count = i;
deferreds.push(
$.post('/echo/html/', {
html: "<p>Task #" + count + " complete.",
delay: count
}).success(function(data) {
$("div").append(data);
}));
}
return deferreds;
}
$(function() {
$("a").click(function() {
var deferreds = getSomeDeferredStuff();
$.when(deferreds).done(function() {
$("div").append("<p>All done!</p>");
});
});
});
延期したタスクがすべて完了したら、"All done!" を表示させたいのですが。
$.when()
はDeferredオブジェクトの配列をどのように処理すればよいのかわからないようです。
オブジェクトを関数に渡すことができるのは知っています。
$.when(deferred1, deferred2, ..., deferredX)
しかし、私が解決しようとしている実際の問題では、実行時にいくつのDeferredオブジェクトが存在するかは不明です。
どのように解決するのですか?
に値の配列を渡すには
任意の
関数は、通常、個別のパラメータであることを期待します。
Function.prototype.apply
が必要なので、この場合は
$.when.apply($, my_array).then( ___ );
参照 http://jsfiddle.net/YNGcm/21/
ES6では
...
スプレッド演算子
の代わりに
$.when(...my_array).then( ___ );
どちらの場合でも
.then
ハンドラが必要とする場合、そのハンドラは
arguments
の配列で、各プロミスの結果を取得します。
関連
-
要素ツリー制御によるvueTreeテーブル
-
Vueにシンプルなメモ帳機能を実装
-
Vueの「データを聴く」原則を解説
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】配列に何かを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
Vueのイベント処理とイベントモディファイアの解説
-
Vueの「データを聴く」原則を解説
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】awaitは非同期関数でのみ有効です。
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] jQuery Deferredsの配列はどのように扱うのですか?重複