問題タブ [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.
javascript - Angular.js:解決されたプロミスのプロパティを $scope に割り当てることはできませんか?
Ajaxを使用していくつかのサーバーデータをフェッチし、それ$rootScope
をコントローラーとサービスがアプリをブートストラップする前に取得できるようにアタッチするアプリケーションをリファクタリングしようとしています。$q
plnkr: http://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY
そのplnkrで、いくつかのコントローラーが動作するようにサービスにデータを返させようとしています。
$routeProvider の resolve-property をこのように使用しています
しかし、解決されたプロミスの 'foo' プロパティをコントローラーの 1 つで $scope に割り当てようとすると、うまくいきません。
http://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY?p=previewで見られるように、Promise が解決され、実際の Promise オブジェクトのプロパティが終了した$scope
ときに、 は更新されません。foo
$scope
それで、約束のプロパティをに割り当てることによって、ここで絶対にやってはいけないことをしています$scope
か? ルートの解決プロパティは、約束が解決されるまで何も初期化されないことを意味するという印象を受けました。
javascript - AngularJS : オフライン時にローカル ストレージを使用する
AngularJS を使用していますが、オフライン時にローカル ストレージ データを使用する方法を知りたいです。私は自分のサービスでこれを試しました:
これは機能していません。データはキャッシュされますが、Tomcat をオフにするとバインディングがありません。だから私はこのようなことをしました:
そしてコントローラーで
これは機能していますが、最初の機能が機能しない理由がわかりません。誰かがそれを説明できますか?
javascript - この node.async コードを q を使用するように変換するにはどうすればよいですか? 約束を返す必要がありますか?
私のコントローラー内の「ビュー」メソッドでは、以前は使用してnode-async
いましたが、使用してみましたq
。
私は現在これを変換しようとしています
qを使用するには...次のようなことを始めました:
しかし、意図したとおりに機能していません。ここで何か間違ったことをしていますか?これどうやってするの?
node.js - Q で任意の数のプロミスをチェーンする
HTTP リクエストを N 回送信したい。最終的には、これらの各リクエストの結果に関する情報を取得したいと考えています。
request 関数を一度実行するとうまくいきます。Q.defer() を使用した HTTP リクエスト関数は次のとおりです。
これを行うと、期待どおりのデータが返されます。
繰り返すために、私はそれを for ループに当てはめようとしました:
次に、次のように呼び出します。
最終的に成功コールバックに入ります (つまり、「iterateRequests 後の成功コールバックに」記録されます)。ただし、 runRequest(). then() コールバックからログを取得する前に console.log(results) が出力され、空の配列になります。
promise-return 関数の連鎖/反復に関するアイデアやガイダンスはありますか?
ありがとう!
@abject_error の回答に対するフォローアップの質問を更新します。
Q.allをチェックアウトしました。間違いなく私が必要とするもののように見えます。そして、私が取り組んでいたものよりもはるかに簡単です。それがどのように機能するかを理解するのに役立つ簡単なテストケースを作成しました。
したがって、呼び出す必要がある回数 (および呼び出す関数) を事前に知っていれば、どのように使用できるかがわかります。配列内の returner (この例) または runRequest (私の元の例) への呼び出しの動的な数を取得する方法に関するヒントはありますか?
javascript - promise の 2 つの実装の違い
私は自分のウェブサイトでプロミスを使用しています(まだ学習中です)が、これに違いがあるかどうかを知りたいです:
この:
最初の実装では、時々エラーが発生しました。
ありがとう。
breeze - 複数のクエリを連結するための適切な構文は何ですか?
Durandal を利用した HotTowel SPA テンプレートを使用しています。私の Durandal ViewModels では、Breeze を使用してデータベースからデータを取得しています。
すべての簡単なクエリを入れる datacontext クラスがあり、クエリはすべて次のようなパターンに従います。
ビュー モデルの activate メソッドで非同期呼び出しを行っているため、これらの呼び出しから返される promise を activate メソッドで返す必要があります。
単一のクエリを使用すると、次のようにうまく機能します。
ただし、2 つのクエリを実行する必要がある場合、問題が発生しますが、これはアプリケーションのリリース バージョンでのみ発生します。私は次の構文でこれをやろうとしました:
これはデバッグ モードでは問題なく動作しますが、サーバーにデプロイしてスクリプトをバンドルすると、あまり明確ではない例外が発生します。
t は関数ではありません
また、以下のように datacontext クラスでそれらをチェーンしようとしましたが、それでも同じエラーが発生します。
だから私は Q.defer() を適切に使用するのに十分理解していないか、何か他のことが起こっていると仮定しています。
これを達成するための正しい構文は何ですか?
javascript - kriskowal/q node.js q.all とスプレッド
渡された 3 つの前の promise の結果を必要とする関数があります。1 つは線形的に依存し、他の 2 つは同時に実行できます。q.all を使用して 3 つのプロミスを解決し、結果を .spread を使用して 4 つ目に渡したいと考えています。ただし、私のコードは機能しません。どんな助けでも大歓迎です。
node-inspector でコードをトレースすると、最初の 3 つの promise が呼び出されていることがわかります。ただし、.spread が呼び出す関数は呼び出されていません。理由の手がかりはありますか?また、 .fail もヒットしていません。
node.js - promise コールバック内の next() への呼び出しを無視する Restify.js (Connect/Express) ミドルウェア
そう。私が構築しているRestify.jsアプリケーションの基本的なミドルウェアを実装しようとすると、いくつかの癖が発生し、next()
コールバックを約束します。
問題を一般的な形式で表現するには、次のようにします。
Promise は次のように解決します。
約束は拒否される
私は明らかに間違ったことをしていますか?洞察はありますか?それは確かに約束のコールバックに関連しているようですが、何らかの形でへの呼び出しを抑制していますnext()
か?