ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の非同期関数は常に Promise を返しますか?

JavaScript の非同期関数は常に Promise を返しますか?

Susan Sarandon
リリース: 2024-12-22 09:54:37
オリジナル
728 人が閲覧しました

Do Async Functions in JavaScript Always Return Promises?

非同期関数の暗黙的な Promise

JavaScript では、非同期関数は、Promise が完了してその値を返すのを非同期に待機できる関数です。ただし、よくある誤解は、非同期関数は返される値に対して暗黙的に Promise を返すということです。

戻り値を理解する

非同期関数は暗黙的に返されるように見えるかもしれませんが、お約束ですが、これは完全に正確ではありません。非同期関数の戻り値は、次の 2 つのいずれかになります。

  • 非 Promise 値: 非同期関数が明示的に非 Promise 値を返す場合、その値は自動的に Promise にラップされます。
  • Promise: それ自体が Promise である非同期関数の戻り値はそのまま残ります。

非 Promise 値の例:

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

increment(3).then(num => console.log(num)); // Logs: 4
ログイン後にコピー

ここでは、async 関数から数値を返します。ただし、出力は .then() を通じて取得され、値 4 に解決された Promise であることが示されます。

明示的な Promises:

非同期関数から明示的に Promise を返すと、その値に対する Promise を受け取ります。 promise.

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

increment(3).then(num => console.log(num)); // Logs: 4
ログイン後にコピー

例外ケース:

  • 空の非同期関数: 非同期関数に明示的な return ステートメントがない場合でも、promise を返します。 unknown.
  • 非同期関数での Await: 非同期関数内で await を使用しても型には影響しません。戻り値の。戻り値が Promise でない場合でも、Promise でラップされます。

結論

JavaScript の非同期関数は、Promise 以外の戻り値を暗黙的にラップします。約束で。ただし、戻り値がすでに Promise である場合は、そのまま残されます。この動作は従来の return ステートメントとは異なりますが、ES6 のジェネレーターの基本原則と一致しています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート