フラットな Promise チェーン内の中間 Promise 結果を取得するには、チェーンを分割して別々にする必要があります。
パラメータに依存する代わりに単一のコールバックを使用して中間値を取得する場合は、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 コンビネータ Promise です。 all は、a と b の結果を集計するために使用されます。 Promise.all に続くコールバックは、resultA と resultB の両方にアクセスして、複合値を構築するために利用できます。
Q、Bluebird などのライブラリは、 などのヘルパー メソッドを提供します。スプレッドを使用して、複数の Promise 結果の処理を簡素化します。 ES5.
… return Promise.all([a, b]).then(function(results) { results.spread(function(resultA, resultB) { … }); });
Bluebird は、Promise.all と .spread の組み合わせのより効率的な代替手段として、専用の Promise.join 関数を提供します。
… return Promise.join(a, b, function(resultA, resultB) { … });
以上がフラットな Promise チェーンで中間 Promise の結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。