ホームページ >ウェブフロントエンド >jsチュートリアル >非同期関数が即値ではなく保留中の Promise を返すのはなぜですか?

非同期関数が即値ではなく保留中の Promise を返すのはなぜですか?

DDD
DDDオリジナル
2024-12-13 19:20:11285ブラウズ

Why Do Asynchronous Functions Return Pending Promises Instead of Immediate Values?

非同期関数が値ではなく保留ステータスの Promise を返すのはなぜですか?

コードでは、以下を呼び出す非同期関数 AuthUser が定義されています。 google.login() を実行し、それが生成する Promise を返します。関数が呼び出されると、結果がまだ解決されていないため、Promise は保留ステータスでログに記録されます。

解決策:

Promise の解決された値にアクセスするには、まだ保留中の場合でも、.then() でチェーンする必要があります。例:

AuthUser(data)
  .then((token) => {
    console.log(token); // "Some User token"
  });

詳細:

Promise は一方向の操作です。解決されると、値は状態 (解決済みまたは保留中) に関係なく .then() または .catch() メソッドに渡されます。 .then() の戻り値は、Promise の解決された値です。

提供されたコードでは、AuthUser は Promise を直接返し、.then() が呼び出されるまでその解決された値は使用できなくなります。

追加の洞察:

  • 約束/仕様.then() ハンドラーが値を返す場合、Promise はその値で解決されると述べています。別の Promise を返す場合、元の Promise は連鎖された Promise の解決された値で解決されます。
  • Chained .then() ハンドラーには、前の .then() で返された連鎖された Promise の解決された値が常に含まれます。
  • .then() ハンドラーが Promise を返す場合、その連鎖された Promise の解決された値が次のハンドラーに渡されます。 .then().

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

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