ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript `.then()` チェーンの中間 Promise 結果にアクセスするにはどうすればよいですか?

JavaScript `.then()` チェーンの中間 Promise 結果にアクセスするにはどうすればよいですか?

DDD
リリース: 2024-12-26 00:08:09
オリジナル
204 人が閲覧しました

How Can I Access Intermediate Promise Results in a JavaScript `.then()` Chain?

.then() チェーンでの中間 Promise 結果へのアクセス

Promise は、コード内の非同期操作を管理する便利な方法を提供します。ただし、.then() チェーン内の中間 Promise 結果にアクセスする必要があるシナリオが発生する場合があります。

課題

次の Promise チェーンを考えてみましょう。

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Some processing
        return promiseB(…);
    }).then(function(resultB) {
        // More processing
        return // How do I gain access to resultA here?
    });
}
ログイン後にコピー

このチェーンでは、promiseA() の結果は .then() コールバック内ではアクセスできません。約束B()。最終的な計算で両方の結果を使用する必要がある場合、これは問題になる可能性があります。

チェーンの分割

この制限を克服するには、チェーンを別々に分割します。ピースを作成し、ライブラリが提供する Promise コンビネータを使用します。次のリファクタリングを検討してください。

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // some processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // more processing
        return // something using both resultA and resultB
    });
}
ログイン後にコピー

このアプローチでは、Promise.all を使用して、両方の Promise が解決されるまで待機してから、結果を最後の .then() コールバックに渡します。

その他オプション

  • 分解: ES6 では、Promise.all によって返される配列を個々の変数に分解できます。
  • Spread Operator: ES6 はスプレッド演算子もサポートしており、配列要素をコールバックに拡散するために使用できます。 argument.
  • 結合メソッド (Bluebird): Bluebird は、複数の Promise を 1 つの結果に単純化する専用の結合関数を提供します。

チェーンを使用し、これらの代替手段を使用すると、中間の Promise 結果に簡単にアクセスし、明確なモジュール式のコード構造を維持できます。

以上がJavaScript `.then()` チェーンの中間 Promise 結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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