Promise Chaining と Value Access について
Angular などの JavaScript フレームワークで Promise を扱う場合、Promise を返す非同期関数に遭遇することがあります。 Angular の $q の例のようにドキュメント:
promiseB = promiseA.then(function(result) { return result + 1; });
ドキュメントには、「promiseB は、promiseA が解決された直後に解決されます...promiseA の結果が 1 ずつ増加します」と記載されていますが、これがどのように機能するかは明確ではないかもしれません。
これを理解する鍵は、promiseA の then 関数が新しい Promise、PromiseB を返すことを認識することです。この新しい Promise は、promiseA が解決された直後に解決され、その値は、promiseA 内の success 関数の戻り値によって決定されます。
この場合、success 関数は「結果 1」を返すため、promiseB は次のように解決されます。 result の値は 1 増加します。 したがって、この値にアクセスするには、次の操作を実行できます。
promiseB.then(function(result) { // Here you can use the result of promiseB });
最新の JavaScript バージョン (ES7 以降) では、次のことができます。同じ機能を実現するには、async/await 構文を使用します。
async function doSomething() { let result = await functionThatReturnsPromiseA(); return result + 1; }
この場合、await は、promiseA からの結果をラップ解除し、結果変数に直接割り当てます。これにより、 Promise object.
async/await は、常に Promise を返す async 関数内でのみ使用できることに注意してください。したがって、非同期関数の戻り値にアクセスしたい場合は、別の非同期コンテキスト内で await を使用する必要があります。
以上がJavaScript で Promise チェーンの解決された値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。