ホームページ > ウェブフロントエンド > jsチュートリアル > 非同期関数が値の代わりに `Promise { }` を返すのはなぜですか?

非同期関数が値の代わりに `Promise { }` を返すのはなぜですか?

Barbara Streisand
リリース: 2024-12-13 06:07:17
オリジナル
839 人が閲覧しました

Why Does My Asynchronous Function Return `Promise {  }` Instead of a Value?

Promise を返す非同期関数 { 提供されたコードで示されているように、非同期関数は多くの場合、Value の代わりに、最終的に利用可能な値を表す Promise を返します。ただし、その値にすぐにアクセスしようとすると、Promise が未解決の状態であるため、コンソールに「Promise { }」と記録されます。

Promise Values を解決中

必要なトークン値を取得するには、「.then」ハンドラーを Promise にチェーンする必要があります。このハンドラーは、解決済みの結果がすでに利用可能であるか保留中であるかに関係なく、キャプチャします。

Promise 解決の詳細
let AuthUser = (data) => {
  return google.login(data.username, data.password).then((token) => {
    return token;
  });
};

let userToken = AuthUser(data);
userToken.then((result) => {
  console.log(result); // "Some User Token"
});
ログイン後にコピー

Promise は、次のことを義務付ける Promises/A 仕様に準拠しています。特定の解決手順:

「.then」ハンドラーの場合値を返すと、Promise はその値に解決されます。

    ハンドラーが別の Promise を返した場合、Promise は連鎖された Promise の解決された値に解決されます。
  • Promise について連鎖

各 ".then" ハンドラーの解決された値は、 next ハンドラーの入力により、一連の非同期操作が可能になります。次の例は、この動作を示しています。

値の戻り値:

連鎖された Promise の戻り値:
function initPromise() {
  return new Promise((res, rej) => {
    res("initResolve");
  });
}

initPromise()
  .then((result) => {
    console.log(result); // "initResolve"
    return "normalReturn";
  })
  .then((result) => {
    console.log(result); // "normalReturn"
  });
ログイン後にコピー

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

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