ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript Promise チェーンで依存する結果を管理するにはどうすればよいですか?

JavaScript Promise チェーンで依存する結果を管理するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-05 18:01:11
オリジナル
864 人が閲覧しました

How to Manage Dependent Results in JavaScript Promise Chains?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート