問題タブ [rsvp-promise]
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 - Node.js - 別のメソッドが完全に実行された後にメソッドを呼び出す
私は2つの簡単な方法を持っています:
done()
今、私は終了時に必ず呼び出したいと思いdo()
ます (**do() メソッドには Mysql DB への非同期要求が含まれています)
どうすればこれを達成できますか?**
明らかに、これはそのようなメソッドを順番に並べません:
だから私は試しました:
これは私が約束に使用するものですhttps://github.com/tildeio/rsvp.js/#arrays-of-promises
javascript - Promise を複数回解決する
Promisesを使用してモジュールを構築しています。ここでは、複数の urlsで複数の http 呼び出しを行い、応答を解析してから、さらに http 呼び出しを行います。
問題は、promise を使用すると、すべての http 要求が行われない限り、モジュールを解析できないことです。それの訳は -Once a promise has been resolved or rejected, it cannot be resolved or rejected again.
独自のバージョンの promise を構築するか、別のアプローチがありますか?
javascript - EmberDataを使用してEmberJSでネストされたモデルで構成されるプロミスを返す方法は?
環境
モデル
質問を理解しやすくするために、ユースケースを単純化しました。Country
、Region
およびの 3 つのモデルがあるとしArea
ます。
予想された結果
ルートのモデル フックは、オブジェクトの配列を返す必要があります。このような:
注:インデントは、例を読みやすくするためだけのものです。
現在のアプローチ
エラー
私はError while loading route: TypeError: Object [object Array] has no method 'then'
明らかにこのコードに由来するものを取得しています:
ただし、これは私が抱えている本当の問題を示しているはずです:
問題
countries
を取得するために解決する必要がregions
あり、次に を取得する必要がありareas
ます。RSVP.hash
関数とRSVP.all
関数をチェックし、公式 API を読み、このトークを見てきましたが、promise をチェーンするための正しいコードを作成できず、最終的then
に返された結果を期待どおりに変更することができませんでした。
最終的な考え
このようなデータをロードすると、多くの HTTP リクエストが発生する可能性があり、おそらくこれはサイドローディングによってより適切に解決されると言われていますが、次のようになります。
- 現時点では を使用
FixturesAdapter
しているため、HTTP リクエストは問題になりません - RSVP と Promises をもっとよく理解したい
そのため、これを正しく行う方法を理解することが重要です。
編集 1: kingpin2kによって提案された変更の適用
kingpin2k の anwser によって提案された変更を加えて、私の例のJSBinを作成しました。
コードは機能しますが、結果は...予期しないものです:
countries
配列でcountry
とregion
オブジェクトの両方を見つけました。なんで?country
およびオブジェクトはロードされているように見えますが、エリアはロードされていませんregion
(JSBin のコンソール ログの結果を参照してください)。
編集 2: Edit1 からの予期しない動作の説明。
ということで、エンバーの正道から外れていたところにようやく気がつきました。Kingpin2k の anwser は大きな前進でしたが、小さなエラーが含まれています。
だから..今、私は最終的にすべてのオブジェクト(国、地域、地域)を正しく解決し、仕事を続けることができます:)
編集 3: このJSBinの作業ソリューション!
javascript - EmberJS "this" が promise (find) コールバックで変更されました
コントローラーアクションでサーバーからアカウントを取得したい場合:
行の「this」this.set('account', account)
はコントローラーではないため、エラーがスローされます。この promise コールバック内からコントローラーに「アカウント」を設定するにはどうすればよいですか?
javascript - Promises/A+ の実装はどのように異なりますか?
仕様でカバーされていないpromise ライブラリの側面は? 実装間でどのような違いがありますか?
実際の違いの例を示してください (Bluebird と Q など)。
javascript - 任意の数のチェーン要素で map または reduce を使用して promise-then チェーンを実行する方法は?
私は次のことにこだわっています:
スクリプトは、次のように任意の数値n
または配列を返します。
promise を使用して配列をループする必要がありますthen()
が、要素の数がわからないため、これを行うことになりました。
私の問題はreduce/map
、非同期コードが実行される前に両方がすべての反復をトリガーすることです。そのため、コンソールが 3 倍になり、その後にcurrent
コンソールが続きdone
ます。したがって、すべてのマップの「ループ」は即座に実行され、結果は少し (あまりにも) 遅れて記録されます...
私はこのRSVP実装を使用していますが、これは A+ なので問題にはなりません。ここで提供されている回答に沿って作業しようとしていますが、適切に機能させることができません。
質問:任意の数のステートメント
で「then-chain」を作成することは可能ですか? then
もしそうなら、いくつかの指針をいただければ幸いです!
ありがとう!
javascript - 呼び出しをブロックする必要がある場合、Ember で非同期プロパティを処理するにはどうすればよいですか?
子が埋め込まれた hasMany を持つモデルを使用していました。これは問題なく、 model.get('children') を呼び出すたびにすべてが機能しました。
その children プロパティを async:true に変更しましたが、これを処理する方法に関する適切なドキュメントが見つからないようです。
例を挙げましょう。簡単にするために、簡略化された json を使用して Ember のセットアップを表します。
次のようなモデルがあるとします。
次のようなテンプレートがあるとします。
そして、私はControllerを持っています:
わかりました、async: false が使用されていたときのこのセットアップでは、すべてがうまくいきました。
しかし今、async が true の場合、.get('children') SOMETIMES のコントローラーでのその呼び出しは、私が推測する非同期であるため、何も返しません。
これで、promise を使用して、コントローラーを次のようにリファクタリングできます。
2 番目のリファクタリングの問題は、isActive 値を返さなくなり、Promise オブジェクトを返すようになったことです。
しかし、テンプレートは約束を望んでおらず、戻り値が必要です。
SO、約束の代わりに呼び出しの実際の結果を返すことができる一方で、非同期がロードされたことを確認するにはどうすればよいですか?
node.js - TypeScript で、Node.js の RSVP 実装で Promise を使用する方法
Node.js で、TypeScript で promise を使用する適切な方法は何ですか?
現在、定義ファイル「rsvp.d.ts」を使用しています。
…そして私の「.ts」ファイルでは:
それは機能しますが、「グローバル」への参照は醜いです。
注意。FixedTyped の定義ファイルを使用できませんでした。