問題タブ [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.
jquery - jquery defer および非同期 ajax リクエスト。- レースコンディション?
ロードしたテンプレートからの応答を保証するために ajax リクエストを取得しようとして立ち往生しています。
基本的に、コードを実行して遅延オブジェクトを返すと、テンプレート オブジェクトを取得する前に $.then() が呼び出されます。これは、最初の実行時にのみ発生します。
私はこれで髪を引き裂いています!
私のajax呼び出し:
私はこのように私のメソッドでこれを呼び出しています:
jquery - jQueryDeferreds-$。whenの結果を$.thenに渡します
jQuery Deferredオブジェクトをもう少し使い始めましたが、次の問題が発生しました。
データの事前検証、ajaxセットアップ、およびサーバーに送信してxyzをデータとして返すその他のいくつかの機能を実行する中央のAJAX関数があります。$ .when(ajaxfn).then(dosomethingwithresult());の'then'部分にある'xyz'にアクセスするにはどうすればよいですか。ajaxfnが遅延オブジェクトを返すことがわかりましたが、xhrのresponseTextを転送する方法はありますか?
私は本質的にこのようにやっています...
現時点では、$。dataポインターをajaxfnに渡しており、ajaxリクエストが成功すると、$('body'、pos、result)があり、そのように内部からアクセスします。 ('body).data(pos)==xyz。私が説明したことを行うためのより良い方法があるかどうか知りたいですか?
jquery - Jquery Deferred-これはスコープですか?構文?
DBをクリアするための一般的なルーチンがあります。
そして、このルーチンは次の場所から呼び出されます。
WebDBBuilder.php
は、サーバーからデータを読み取り、サーバーDBで利用可能なデータからローカルWebDBをビルド/再構築するファイルです(W3Cにもかかわらず、私たちはこれを放棄するずっと前に開始しました)。このルーチンは、サーバーをポーリングするルーチンが新しいデータが利用可能であることを示すフラグを立てたときに呼び出されます。次に、ローカルDB内の特定のテーブルを破棄します。グローバル変数g_sSQL_dropDB
は単にDROP TABLE IF EXISTS tbl_someTable
文字列の配列です。
このtransactDB()
ルーチンは、渡されたSQLステートメントを実行するもう1つの遅延ベアリング関数です。問題のtransactDB()
テーブルが適切に削除され、アプリの残りの部分全体で使用されるため、は必要に応じて機能しています。このgetNextDataSet()
関数は、より大きなオブジェクトの一部です。正しく呼び出されています。
問題は、ページジャンプが発生しないことです。clearDB()
これは、関数 内のDeferredオブジェクトに関するある種のスコープの問題ですか?
私が見逃しているコードに何かがありますか?done()、resolve()、$。when()。then()を使用してみました。灘。
どんな助けでも深くいただければ幸いです。私はjQueryフォーラムでいくつか質問をしましたが、基本的に応答はありませんでした。そのため、ここではstackoverflowを使用したほうが幸運だと思いました。
<------------追加-------------->
素晴らしい入力をありがとう。私はジュリアンがくれたコードを取りました、そして($ .mapのマイナーな構文スイッチで)それは美しく働きました!
そして、あなたは関数の「this」参照について正しかった。私は以前にクラスからいくつかのコードを引き出して、単に頭のオナラを持っていました。変数「g_sSQL_dropWorkoutDB」は、データベースの構築と削除に使用される変数のみを保持するインクルードファイルに含まれるグローバルです。
ジュリアン、たくさんありがとう!
スコット。
jquery - 2 つの遅延オブジェクトを含む $.when に単一のパラメーターを渡すことは可能ですか?
jQuery オブジェクト内のすべての画像が読み込まれたときにのみ、いくつかのコードを実行したいと考えています。私は次のようにこれを行うことができます:
これは問題ありませんが、画像ごとに個別の遅延オブジェクトを定義する必要はありません。それらが何百もある場合、またはそれらが特定のページに存在する場合と存在しない場合はどうなりますか? 次のようなもので、一度にすべてやりたいと思います:
allImagesHaveLoaded
画像を反復処理し、それぞれに新しい遅延オブジェクトを作成する関数を作成しようとしました。問題は、これらの配列を when のパラメーターとして使用するために返すと、機能しないことです (これは遅延オブジェクトではなく、遅延オブジェクトの配列であるためです)。
私$.Deferred.pipe
も少しいじりました(チェーンされた遅延オブジェクトを作成してに渡しますwhen
)が、それは役に立たなかったようです。
これを行う賢明な方法はありますか?
javascript - とにかくjquery deferred $.whenを配列に渡すには?
重複の可能性:
Deferred の配列を $.when() に渡す
jquery deferred $.when を ajax 関数の配列として渡す方法はありますか? 例:
ご協力いただきありがとうございます!
jquery - promiseでjQueryロードを使用する
私はまだ頭を包み込もうとしてdeferred
いますが、そうではないので、これを念頭に置いて、次の方法について質問があります。
私のチームと私には3つの別々の.load()
メソッドがあり、それぞれが特定のテンプレートを取得して同じコンテナーに追加します。各ロードには、ご想像のとおり異なる時間がかかるため、コンテンツがロードされると、「階段状」の方法でロードされます(1、2、3)。deferred
オブジェクトを利用して、すべて完了するまで待ってから、同時に追加して「階段」アクションを削除したいと思います。
3つの呼び出しはすべて、上記の呼び出しと同様です。
どうすればこれを達成できますか?
jquery - jQueryDeferred-複数のAJAXリクエストが終了するのを待っています
私は延期されたajax呼び出しの3層の深いチェーンを持っており、理想的には、最も深い層が終了したときに約束を完全に開始します(私はインセプションのことです...「私たちはもっと深く行く必要があります!」)。
問題は、一度に多くのajaxリクエスト(おそらく数百)を送信していて、それらがすべて完了するまで延期する必要があることです。最後に行われたものに頼ることはできません。
javascript - jQueryの延期-このパターンを実現するには、パイプまたはチェーンが必要ですか?
運が悪かったので、延期されたJQueryを使用して、次のシナリオを実装しようとしています。
据え置きAPIのどの部分を使用し、次のことを実現するために呼び出しをどのように構成しますか。
serviceAへの最初のajaxcallAは、IDのリストを取得します
この呼び出しが戻るまで待ちます
次に、serviceBへのnajax呼び出し、callAによって返されたリストからのIDを使用した各呼び出し
すべてのserviceB呼び出しが戻るまで待ちます
次に、serviceCへの最後のajax呼び出し
jquery - jQuery-延期するajax関数は成功した場合にのみ戻りますか?
いくつかのコードを設定しました。ajaxリクエスト用の非常にシンプルなAPIを取得したいと思います。
ですから、私がやりたいのは、成功を返すためになんとかして延期されたものを使用することです。
これは、次のようなものによって呼び出されます
私がこのようにそれを使うことができるように:
基本的に、オブジェクトdataTools.foo
は成功から値を返すか、失敗のベントで空のセットを返すか、そのコード分岐をスキップするものを返す必要があります。
を使用して$.when().then()
みましたが、ここで説明したようなものにどのように適合させるかがわかりません。