問題タブ [q]

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.

0 投票する
1 に答える
367 参照

jquery - 配列に対する jQuery 非同期呼び出し

次のスキームを機能させようとしています: オブジェクトの配列を返す ajax 呼び出しがあります (約束)。これで、他の非同期 ajax 呼び出しを行うなど、配列内の各項目に対して追加の処理を行う関数が成功しました。もちろん、サブ関数が完了する前にメインの success() 関数が返されるため、これは頭痛の種になります。これは私が望んでいることではありません。各サブ関数呼び出しも promise を返します。すべてのアイテムが読み込まれたときにのみメイン関数を終了したいと考えています。

これが私がこれまでに試したことです。メイン関数 getItemData は Q.all(...) が戻るのを待っていません。私はJS AsyncQ.jsライブラリを使用しています:

0 投票する
2 に答える
2142 参照

node.js - promise のタイムアウト後に実行を停止する

Q モジュールを使用して、作業中のプロジェクトに promise を実装しています。静的メソッド Q.fncall() を使用して、node.js スタイル関数 (err,result を返すコールバックに基づく) からプロミスを作成しています。

問題は、一定時間後にその関数の実行を停止する必要があることです。そのため、Qモジュールの関数「タイムアウト」を使用しました。したがって、x 時間後、done 関数の「エラー」コールバックが実行され、タイムアウトを処理しましょう。ただし、ハンドラーがリッスンしていなくても、関数自体は最後のコールバックに到達するまで実行され続けます。

問題は、タイムアウトが実行された後に関数の実行を停止する方法はありますか? タイムアウト ハンドラーに変数を設定し、タイムアウトが終了した場合に関数をチェックインし続けることができることはわかっていますが、これを実現するためのよりクリーンな方法を望んでいます。

コードは次のとおりです。

そして test1 関数:

}

私の理想的な状況では、 setTimeout(...,2000) 内のコードは決して実行されるべきではありません。これは可能ですか?

前もって感謝します。

0 投票する
1 に答える
597 参照

javascript - Q promise: コールバックは登録されたのと同じ順序で呼び出されますか?

Q promise ライブラリを使用しています。私のコードは、単一の promise のコールバックが登録された順序で実行されるという事実に依存しています。

http://jsfiddle.net/HgYtK/1/

これは正しい結果を生成しますが、それが仕様の一部なのか、それともラインを壊す可能性のある偶然の一致なのかはわかりません.

0 投票する
1 に答える
1098 参照

node.js - Q chained promise の拒否が期待どおりに動作しないのはなぜですか?

ここで何が間違っていますか?次のようなコードがあります。

私のリポジトリコードは次のようにスタブ化されています:

両方の約束が解決され、顧客の約束を拒否すると期待どおりにすべて正常に機能しますが、顧客の約束を解決してユーザーの約束を拒否すると、テストが失敗します。テストは次のとおりです。

0 投票する
1 に答える
1671 参照

knockout.js - デュランダル、KO、ブリーズで Q を正しく使用できていますか?

長年の .NET 開発者が、初めての Web アプリケーションを構築しています。デュランダル、ブリーズ、ノックアウトを使用しようとしていますが、これらはアーキテクチャ的に理解していると思います。しかし、これは、jQuery の基本的な概念のいくつかとともに外国に着陸したような気分になるという事実に変わりはありません。

Q でプロミスの概念を使用して、非同期プログラミングに問題があります。

ここで、API を介してエンティティからデータを取得するために Breeze データコンテキストが呼び出され、「組織」は ko.observableArray です。私のアプリでは、これはうまくいきます。

ただし、私の場合、ビューにはエンティティのリストが 2 つあるため、次のように Q でまとめた datacontext への 2 つの呼び出しが必要です。

私が見る限り、これらの datacontext 呼び出しのいずれかが単独で機能し、ビューに正常にバインドされます。しかし、このようにそれらを IQ すると、最初のものだけが機能するように見えます。ここで基本的な何かが欠けているのではないかと心配しています。

ネットワーク トラフィックで、2 つのエンティティ セットに対して両方の API 呼び出しが行われていることがわかります。そして、良い結果がネットワーク経由で戻ってきます。

ただし、2 回目の呼び出しの ko.observable (userRoles) にはデータが含まれていないようです。Q配列でそれらの順序を入れ替えると、最初のものが機能します。ここで何かを怠ったように思えて、結合が早すぎるか何かです。

ここでの Q の使用が正しければ、他の場所でさらにデバッグを行う必要があると思います。前もって感謝します。

Breeze を使用した ebodatacontext は次のとおりです。

0 投票する
1 に答える
70838 参照

angularjs - Angular $q.when はどのように機能しますか?

$q.whenAngularJS でどのように機能するか説明してもらえますか? 私はどのように$http機能するかを分析しようとしていますが、これを見つけました:

そして、Chrome コンソールからの構成オブジェクトは次のとおりです。

次は何が起こる?このオブジェクトがどのように解決または拒否されるか?