非同期関数と暗黙的な Promise の戻り値
JavaScript では、async キーワードでマークされた非同期関数は暗黙的に Promise を返します。これは、非 Promise 値を明示的に返すか、何も返さない場合にも当てはまります。
Implicit Promise Wrapper
明示的に a を返さない場合Promise を使用すると、返される値は自動的に Promise でラップされます。
async function increment(num) { return num + 1; } // Logs: 4 increment(3).then(num => console.log(num));
これは、戻り値がは数値であるため、非同期処理の目的で Promise に変換されます。
Unwrapped Promises
Promise は自動アンラップします。つまり、非同期関数内からの値の Promise の場合、値の Promise を受け取ります (関数の Promise の Promise ではありません)。 value).
async function increment(num) { return defer(() => num + 1); } // Logs: 4 increment(3).then(num => console.log(num));
一貫性のない動作
非同期関数の動作は、非 Promise 値を明示的に返す場合と異なるため、確かに従来の return ステートメントと矛盾しているように見えることがあります。 。これは、非同期関数がジェネレーターと呼ばれる特別なタイプの関数を利用しており、常に return ステートメントと同じ値を返すとは限らないためです。
以上が非同期 JavaScript 関数は常に Promise を返しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。