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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 06:39:17220ブラウズ

How Can I Access Intermediate Promise Results in JavaScript Promise Chains?

Promise チェーンでの中間結果の管理

問題:

Promise チェーンを作成するときに、最終コールバック内で中間の Promise 結果にアクセスするのは難しい場合があります。次の例では、promiseB のコールバック内で、promiseA の結果にどのようにアクセスできますか?

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Processing
        return promiseB(…);
    }).then(function(resultB) {
        // How can we access resultA here?
    });
}

解決策: チェーンの切断

中間結果にアクセスするにはPromise チェーンでは、チェーンを個別のコンポーネントに分割するのが最善です。これにより、同じ Promise に複数のコールバックをアタッチし、必要に応じて解決された値にアクセスできるようになります。コードの改良版は次のとおりです。

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // Processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // Processing using both resultA and resultB
        return …;
    });
}

このアプローチでは、Promise.all() メソッドを利用して、チェーン内のすべての Promise の配列を作成します。次に、別の then() コールバックを Promise.all() の結果に連鎖させ、解決された値の配列を受け取る関数を渡します。これにより、最終コールバック内で resultA と resultB の両方に簡単にアクセスできるようになります。

代替ソリューション:

ES5 では、.spread() メソッドを使用して達成できます。同様の機能:

…
return Promise.all([a, b]).then(.spread(function(resultA, resultB) { … });

Bluebird は、このプロセスを簡素化する専用の join() メソッドを提供します。さらに:

…
return Promise.join(a, b, function(resultA, resultB) { … });

チェーンを切断し、適切な Promise コンビネータを使用することで、中間の Promise 結果にエレガントにアクセスして操作でき、明確で効率的なコード構造を確保できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:クラウドコール次の記事:クラウドコール