[解決済み] $.when.apply($, someArray)は何をするのですか?
2022-05-17 19:48:43
質問
私は
Deferreds と Promises について読んでいます。
を読んでいて、何度も
$.when.apply($, someArray)
. 私はこれが正確に何をするのか少し不明で、次のような説明を探しています。
一行
が正確に動作するという説明を探しています (コードスニペット全体ではありません)。 ここにいくつかのコンテキストがあります。
var data = [1,2,3,4]; // the ids coming back from serviceA
var processItemsDeferred = [];
for(var i = 0; i < data.length; i++){
processItemsDeferred.push(processItem(data[i]));
}
$.when.apply($, processItemsDeferred).then(everythingDone);
function processItem(data) {
var dfd = $.Deferred();
console.log('called processItem');
//in the real world, this would probably make an AJAX call.
setTimeout(function() { dfd.resolve() }, 2000);
return dfd.promise();
}
function everythingDone(){
console.log('processed all items');
}
どのように解決するのですか?
.apply
は、引数の配列を使って関数を呼び出すために使われます。 配列の各要素を受け取り、それぞれを関数の引数として使用します。
.apply
はコンテキストを変更することもできます (
this
) を変更することもできます。
では
$.when
. これは、"これらの約束がすべて解決されたら...何かをしてください"と言うために使われるものです。 これは無限の(可変)数のパラメータを取ります。
あなたの場合、約束の配列を持っています。
$.when
. 配列そのものを
$.when
は動作しません。なぜなら、それはパラメータが配列ではなく、約束であることを期待しているからです。
そこで
.apply
の出番です。 これは配列を受け取り
$.when
を呼び出します(そして、各要素をパラメータとして
this
に設定されます。
jQuery
/
$
) で、すべてうまくいきます :-)
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] モバイル端末の検出にはどのような方法がありますか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】PromiseとObservablesの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] 文字列の最後の文字を取得するにはどうすればよいですか?重複
-
[解決済み] コンソールで変数のトレースを行う場合、どのように改行すればよいのでしょうか?
-
[解決済み] JavaScriptでクエリ文字列が存在するかどうかを確認するには?
-
[解決済み] Facebook Reactでコードを再利用するためのミキシンとコンポーネントの使い分け
-
[解決済み] リアクトのシャローコンパールはどのように機能するのか
-
[解決済み] JavaScriptの関数の順番:なぜそれが重要なのか?
-
[解決済み] AngularJS - $http.postがJSONの代わりにリクエストパラメータを送信する方法はありますか?
-
[解決済み] Chrome、Javascript、window.open in new tabについて