前の Promise にアクセスすると .then() チェーンが生成されます
Promise を使用してコードを構造化することを追求した「フラット Promise チェーン」複数の .then() コールバックで構成されるものが作成される場合があります。ただし、このチェーン内の中間 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 }); }
ES5代替案:
… return a.then(function(resultA) { return b.then(function(resultB) { // more processing return // something using both resultA and resultB }); });
Bluebird 解決策:
… return Promise.join(a, b, function(resultA, resultB) { … });
以上がJavaScript .then() チェーン内の以前の Promise 結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。