ホームページ  >  記事  >  ウェブフロントエンド  >  非同期関数の戻り値は何ですか?また、それらは Promise にどのように関係しますか?

非同期関数の戻り値は何ですか?また、それらは Promise にどのように関係しますか?

DDD
DDDオリジナル
2024-10-18 10:35:29423ブラウズ

What Are the Return Values of Async Functions and How Do They Relate to Promises?

非同期関数: 戻り値と Promise について

非同期関数を使用すると同期スタイルでコードを作成できますが、本質的に Promise を返します。これにより、コードの戻り値に関する混乱が生じる可能性があります。

Promises: 概要

Promise は、非同期操作の最終的な完了または失敗を表すオブジェクトです。 。これらは 2 つの主要なメソッドを提供します:

  • then(resolve, detect): 操作が成功したとき (解決)、またはエラーを検出したとき (拒否) に、その結​​果を処理します。
  • catch(拒否): エラーを非同期で処理します。

非同期関数と Promises

非同期関数は、明示的に await キーワードを使用しない場合でも、常に Promise を返します。 。この Promise は、非同期操作の結果を表します。関数がエラーをスローした場合、Promise はそのエラーで拒否されます。

使用法:

コールバック関数を使用した Promise:

<code class="javascript">const myAsyncFunction = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
};

myAsyncFunction()
  .then(result => {
    console.log(`Callback Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

Async/Await の Promise:

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
  return result;
}

myAsyncFunction()
  .then(result => {
    console.log(`Await Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

これらの例では、myAsyncFunction は 1 秒の遅延後に値 'Asynchronous value' で解決される Promise を返します。 。 then メソッドと catch メソッドは、それぞれ解決済みまたは拒否された状態を処理します。

Promise を返す

Promise 自体を変更せずに返したい場合は、単に次のようにします。 write:

<code class="javascript">const myAsyncFunction = () => {
  return new Promise(...);
};</code>

変更された値を返す

非同期関数から変更された値を返すには、then メソッド内で Promise の結果を処理して返す必要があります。変更された値。例:

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise(...);
  return result.toUpperCase();
}</code>
この関数は、結果の大文字バージョンで解決される Promise を返します。

以上が非同期関数の戻り値は何ですか?また、それらは Promise にどのように関係しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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