問題タブ [jquery-deferred]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Deferred の配列を $.when() に渡します
何が起こっているかの不自然な例を次に示します: http://jsfiddle.net/adamjford/YNGcm/20/
HTML:
JavaScript:
「全部やった!」が欲しい すべての遅延タスクが完了した後に表示されますが、$.when()
遅延オブジェクトの配列を処理する方法を知らないようです。"すべて完了!" 配列は Deferred オブジェクトではないため、最初に発生しているため、jQuery は先に進み、それが完了したと想定します。
オブジェクトを次のように関数に渡すことができることは知っています$.when(deferred1, deferred2, ..., deferredX)
が、解決しようとしている実際の問題で実行時に Deferred オブジェクトがいくつあるかは不明です。
javascript - jQueryで遅延オブジェクトラッパーを作成する方法はありますか
私は新しいjQuery.Deferredオブジェクトについてたくさん読んでいます。本当に便利なことの1つは、既存のオブジェクトを遅延オブジェクトに変換できることです。そうすれば、データの取得元について100%の柔軟性が得られます。
私はの線に沿って何かを考えています
このメソッドがすでに存在するかどうか、またはどのように作成するかを誰かが知っていますか?
javascript - 同時ajaxリクエストでjQuery when/then/fail:どのリクエストが失敗しましたか?
「foo」と「bar」の同時リクエストが正常に完了した後に何かを実行するシナリオを想像してみてください。または、どちらかまたは両方が失敗した場合にエラーを報告します。
1) 'foo' のリクエストが失敗したか、2) 'bar' のリクエストが失敗したか、または 3) 両方が失敗したかを判断するにはどうすればよいですか?
javascript - jQuery Deferred コールバックの引数は何ですか?
jQuery では、deferred.thenは、Deferred オブジェクトが解決または拒否されたときに呼び出されるハンドラーを追加します。
- doneCallbacks — Deferred が解決されたときに呼び出される関数または関数の配列。
- failCallbacks — Deferred が拒否されたときに呼び出される関数、または関数の配列。
次の例で、これらの 'done' および 'fail' コールバック関数の引数は何ですか?
Deferred オブジェクトのタイプに依存しますか? 例えば:
「x」の値は異なりますか?
javascript - jQuery.when-すべての遅延が「未解決」(解決または拒否)でなくなったときのコールバック?
複数のDeferredオブジェクトがjQuery.whenに渡されると、メソッドは、渡されたすべてのDeferredの集約状態を追跡する新しい「マスター」DeferredオブジェクトからPromiseを返します。
方法はどちらかになります
- すべての遅延が解決されるとすぐにマスター遅延を解決する、または
- 延期の1つが拒否されるとすぐに、マスター延期を拒否します。
マスターDeferredが解決された場合(つまり、すべてのDeferredが解決された場合)、jQuery.whenに渡されたすべてのDeferredの解決された値が渡されます。たとえば、DeferredsがjQuery.ajax()リクエストの場合、引数は、引数リストで指定された順序で、リクエストのjqXHRオブジェクトになります。
Deferredの1つが拒否された複数のDeferredの場合、jQuery.when IMMEDIATELY FIRESは、その時点で一部のDeferredがまだ解決されていない場合でも、マスターDeferredの失敗コールバックを実行します。
すべてのDeferredがjQuery.whenに渡されたときに、コールバックを起動する必要があります。200個のOKコードでJSONオブジェクトを送信し(代わりに404個のNot FoundエラーステータスコードでJSONを送信)、done()メソッドで成功/エラーを判断できますが、APIをRESTfulに保つことをお勧めします。どうすればこれを達成できますか?
jquery - 延期されたjQueryajaxキャッシュ(重複するリクエストが同時に発生した場合)
堅牢なajaxキャッシュを実装し、適切なパターンを探したいと思います。おそらく、新しいjquery1.5.2遅延オブジェクトを使用します。
ここでの一番の答え:
近づいていますが、失敗するのは、2つのajaxリクエストが同時に発生した場合でも、サーバーへのリクエストは2つあります。応答がまだ入っていないため、キャッシュにはまだデータが入力されていません。
サーバーに対して1つのリクエストのみを起動するが、両方にレスポンスを返す実装が必要です。
ajax - jqueryのpromiseメソッドは実際にどのように機能しますか?
私は本当に何delegate
でpromise
あるかを理解していません。
ドキュメントによると-
delegate
セレクターとイベントをある種のラッピングコンテナーにバインドし、後で現在および将来のアイテムに再び使用できるようにします。promise()
新しくロードされたすべてが一致する場合、最初にバインドされたときまで物事を再マップします。たぶん私はこの約束の方法を本当に理解していません。
ラッパーがまだ存在しているが、ラッパーコンテナの内容が変更されているか、経由でリロードされている場合はどうなりますAjax
か?初めてバインドされたときのように、イベントがトリガーまたは機能しないのはなぜですか?
そして、はい、私はドキュメントページに行ったことがあります、私は彼らの説明を完全に理解していません。
jquery - .each()で延期されたJQuery
変更されたすべてのフォームを検出し、それぞれをAjax投稿として送信する関数で、JQueryの遅延メソッドをどのように使用できるかについてのアイデアはありますか?
大量のフォーム送信をリストするだけでも同じことが機能しますが、使用する場合は...
私が機能させようとしているコードのより完全なバージョンはここにあります... JSフィドルで
前もって感謝します!