ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の async/await は常に Promise を返しますか?その理由は何ですか?

JavaScript の async/await は常に Promise を返しますか?その理由は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-12 11:54:10803ブラウズ

Does async/await in JavaScript Always Return a Promise, and Why?

async/await: Promise Unveiled

Promise は、JavaScript の非同期プログラミングの基本的な側面です。 async/await に関しては、async 関数が常に Promise を返すという概念をわかりやすくすることが重要です。

Promise を返す関数呼び出しの前に置かれる await キーワードは、Promise を返す関数呼び出しの前に置かれ、現在の関数の実行を一時停止します。 Promise は解決されるか拒否されます。ただし、この停止は約束を解くものではありません。 Promise の結果は、返された Promise オブジェクト内にまだカプセル化されています。

説明のために、非同期リクエストをシミュレートする次のコードを考えてみましょう。

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar' }), 2000)
  ));

  const json = await request();
  return json;
};

getJSON() を呼び出すと、次のコードが返されます。 await ステートメントはリクエストが完了するまで実行を一時停止するだけなので、Promise completes:

console.log(getJSON()); // returns Promise

対照的に、.then() を連鎖すると、Promise の結果が最終的に公開されます:

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }

コンソールで Promise のラッピングをバイパスできないのはなぜですか.log(getJSON())?これは Promise の基本的な特性です。 Promise は非同期操作を表し、その結果は解決または拒否されるまでわかりません。結果への外部アクセスは意図的に禁止されており、Promise が結果の唯一のメディエーターであり続けることが保証されます。

覚えておいてください、async/await は Promise が見つかったときに実行を一時停止することで Promise の操作をより便利にしますが、実際にはそうではありません。結果にアクセスするために Promise をアンラップする必要がなくなります。

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

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