問題タブ [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.

0 投票する
3 に答える
26736 参照

javascript - Node.js - 別のメソッドが完全に実行された後にメソッドを呼び出す

私は2つの簡単な方法を持っています:

done()今、私は終了時に必ず呼び出したいと思いdo()ます (**do() メソッドには Mysql DB への非同期要求が含まれています)

どうすればこれを達成できますか?**

明らかに、これはそのようなメソッドを順番に並べません:

だから私は試しました:

これは私が約束に使用するものですhttps://github.com/tildeio/rsvp.js/#arrays-of-promises

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

javascript - Promise を複数回解決する

Promisesを使用してモジュールを構築しています。ここでは、複数の urlsで複数の http 呼び出しを行い、応答を解析してから、さらに http 呼び出しを行います。

問題は、promise を使用すると、すべての http 要求が行われない限り、モジュールを解析できないことです。それの訳は -Once a promise has been resolved or rejected, it cannot be resolved or rejected again.

独自のバージョンの promise を構築するか、別のアプローチがありますか?

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

javascript - EmberDataを使用してEmberJSでネストされたモデルで構成されるプロミスを返す方法は?

環境

モデル

質問を理解しやすくするために、ユースケースを単純化しました。CountryRegionおよびの 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配列でcountryregionオブジェクトの両方を見つけました。なんで?
  • countryおよびオブジェクトはロードされているように見えますが、エリアはロードされていませregion(JSBin のコンソール ログの結果を参照してください)。

編集 2: Edit1 からの予期しない動作の説明。

ということで、エンバーの正道から外れていたところにようやく気がつきました。Kingpin2k の anwser は大きな前進でしたが、小さなエラーが含まれています。

だから..今、私は最終的にすべてのオブジェクト(国、地域、地域)を正しく解決し、仕事を続けることができます:)

編集 3: このJSBinの作業ソリューション!

0 投票する
3 に答える
439 参照

javascript - EmberJS "this" が promise (find) コールバックで変更されました

コントローラーアクションでサーバーからアカウントを取得したい場合:

行の「this」this.set('account', account)はコントローラーではないため、エラーがスローされます。この promise コールバック内からコントローラーに「アカウント」を設定するにはどうすればよいですか?

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

javascript - Promises/A+ の実装はどのように異なりますか?

仕様でカバーされていないpromise ライブラリの側面は? 実装間でどのような違いがありますか?

実際の違いの例を示してください (Bluebird と Q など)。

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

javascript - 任意の数のチェーン要素で map または reduce を使用して promise-then チェーンを実行する方法は?

私は次のことにこだわっています:

スクリプトは、次のように任意の数値nまたは配列を返します。

promise を使用して配列をループする必要がありますthen()が、要素の数がわからないため、これを行うことになりました。

私の問題はreduce/map、非同期コードが実行される前に両方がすべての反復をトリガーすることです。そのため、コンソールが 3 倍になり、その後にcurrentコンソールが続きdoneます。したがって、すべてのマップの「ループ」は即座に実行され、結果は少し (あまりにも) 遅れて記録されます...

私はこのRSVP実装を使用していますが、これは A+ なので問題にはなりません。ここで提供されている回答に沿って作業しようとしていますが、適切に機能させることができません。

質問:任意の数のステートメント
で「then-chain」を作成することは可能ですか? thenもしそうなら、いくつかの指針をいただければ幸いです!

ありがとう!

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

javascript - 呼び出しをブロックする必要がある場合、Ember で非同期プロパティを処理するにはどうすればよいですか?

子が埋め込まれた hasMany を持つモデルを使用していました。これは問題なく、 model.get('children') を呼び出すたびにすべてが機能しました。

その children プロパティを async:true に変更しましたが、これを処理する方法に関する適切なドキュメントが見つからないようです。

例を挙げましょう。簡単にするために、簡略化された json を使用して Ember のセットアップを表します。

次のようなモデルがあるとします。

次のようなテンプレートがあるとします。

そして、私はControllerを持っています:

わかりました、async: false が使用されていたときのこのセットアップでは、すべてがうまくいきました。

しかし今、async が true の場合、.get('children') SOMETIMES のコントローラーでのその呼び出しは、私が推測する非同期であるため、何も返しません。

これで、promise を使用して、コントローラーを次のようにリファクタリングできます。

2 番目のリファクタリングの問題は、isActive 値を返さなくなり、Promise オブジェクトを返すようになったことです。

しかし、テンプレートは約束を望んでおらず、戻り値が必要です。

SO、約束の代わりに呼び出しの実際の結果を返すことができる一方で、非同期がロードされたことを確認するにはどうすればよいですか?

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

node.js - TypeScript で、Node.js の RSVP 実装で Promise を使用する方法

Node.js で、TypeScript で promise を使用する適切な方法は何ですか?

現在、定義ファイル「rsvp.d.ts」を使用しています。

…そして私の「.ts」ファイルでは:

それは機能しますが、「グローバル」への参照は醜いです。

注意。FixedTyped の定義ファイルを使用できませんでした。