ホームページ >ウェブフロントエンド >jsチュートリアル >非同期関数は、明示的な戻り値がなくても、常に Promise を返しますか?

非同期関数は、明示的な戻り値がなくても、常に Promise を返しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 21:48:12475ブラウズ

Do Async Functions Always Return Promises, Even Without Explicit Returns?

非同期関数における Promise の暗黙的な戻り

非同期関数は await 式の値を直接返すという想定に反して、実際には常に戻り値を返します。約束。明示的な return ステートメントが存在しない場合、返される値は自動的に Promise にラップされます。これは、非 Promise を含むすべての戻り値に当てはまります。

例:

async function increment(num) {
  return num + 1;
}

increment(3).then(num => console.log(num)); // Logs 4

このシナリオでは、数値が返されても、プロミス内にカプセル化されます。これは、then() メソッドを通じて戻り値にアクセスするときに明らかです。

その他のケース:

  • return ステートメントのない関数も、暗黙的に次の Promise を返します。未定義の値。
  • await 式を含む非同期関数は、await から返された値の Promise を返します。 Operation.

Exception:

このルールの例外は、Promise が非同期関数内から明示的に返された場合に発生します。このような場合、Promise は再ラップされません。

例:

async function increment(num) {
  return new Promise(resolve => resolve(num + 1));
}

increment(3).then(num => console.log(num)); // Logs 4

結論:

whileこの動作は、従来の JavaScript の return ステートメントから逸脱する可能性がありますが、ES6 のジェネレーターの概念と一致しています。 return ステートメントとしての正確な値。

以上が非同期関数は、明示的な戻り値がなくても、常に Promise を返しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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