Promise チェーンで依存する結果を処理する方法
あなたの質問は、Promise ベースの HTTP リクエストのシーケンス内で以前の結果を利用する方法を尋ねています。これに対処するために、まず、依存する Promise 間でデータを共有するためのさまざまな戦略を検討してみましょう。戦略の選択は、以前のすべての結果にアクセスする必要があるか、または最新の結果のみにアクセスする必要があるかによって異なります。
結果を順次フィードする
このモデルでは、それぞれの結果がリクエストは引数として次のリクエストに渡されます。ただし、以前の結果にアクセスするのは困難になります。
結果を上位スコープに割り当てる
代わりに、結果を上位スコープの変数に保存することもできます。これにより、以前のすべての結果にアクセスできます。
オブジェクトへの結果の蓄積
このアプローチには、結果を蓄積するオブジェクトの作成が含まれます。各リクエストはその結果をオブジェクトに追加し、以前のすべてのデータを利用できるようにします。
ネストされた Promise チェーン
ネストされた Promise は、以前の結果へのアクセスを保持します。連続する各レイヤーは、以前のすべての結果にアクセスできるスコープを提供します。
Promise.all() によるチェーンの切断
一部のリクエストが独立して動作できる場合は、次を使用できます。 Promise.all() は完了を待ちます。これにより、結果を非同期で取得できます。
ES7 での Async/Await の使用
ES7 では、async/await を使用して非同期操作のシーケンスを簡素化できます。結果は同じスコープ内で利用できるため、複数の .then() ハンドラーが必要なくなります。
例への適用
特定のケースでは、API キー複数の HTTP リクエスト間で渡される場合は、次のようにすることができます:
var r1, r2, r3; callhttp("172.16.28.200", payload).then(function(result1) { r1 = result1.data; // Extract the API key return callhttp("172.16.28.200", payload); }).then(function(result2) { r2 = result2.data; // r1 contains the API key from the previous request return callhttp("172.16.28.200", payload); }).then(function(result3) { r3 = result3.data; // r1 and r2 contain the API keys from the previous requests });
以上がJavaScript Promise チェーンで依存する結果を管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。