コンテンツにスキップ

JavaScript/async

出典: フリー教科書『ウィキブックス(Wikibooks)』


async

[編集]

async は、非同期関数を定義するために使用されるJavaScriptのキーワードです。async 関数内で使用される await キーワードとともに、非同期処理を直感的に扱うための手段を提供します。async 関数は常に Promise を返します。

構文

[編集]
async function example() {
  const result = await someAsyncFunction();
  console.log(result);
}

説明

[編集]
  • async 関数は、非同期操作を扱うために作成されます。関数の前に async キーワードを付けることで、その関数は非同期関数となり、必ず Promise を返します。
  • async 関数内で、await キーワードを使って非同期操作が完了するのを待つことができます。これにより、非同期処理が同期的に記述でき、コードの可読性が向上します。
  • 非同期関数が return する値は、暗黙的に Promise に包まれます。async 関数が値を返すと、それは自動的に解決された Promise として返されます。

使用例

[編集]
// async 関数の例
async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  console.log(data);
}

fetchData();  // 非同期にデータを取得し、結果を表示

非同期関数の戻り値

[編集]
// async 関数の戻り値
async function example() {
  return 42;
}

example().then(result => console.log(result));  // 42

async 関数とエラーハンドリング

[編集]
  • 非同期関数内でエラーが発生した場合、そのエラーは Promise によって返されます。エラーハンドリングは try...catch 文を使って行います。
  • await と組み合わせて使用することで、非同期関数のエラーも同期的に処理することができます。
// エラーハンドリングの例
async function fetchDataWithErrorHandling() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchDataWithErrorHandling();  // エラーが発生した場合、catch で処理される

async 関数は、Promise のラッパーとして機能します。async 関数が返すのは、Promise であり、その Promise が解決されると、非同期処理の結果が返されます。これにより、非同期コードは Promise チェーンや then メソッドと組み合わせて使うことができます。

// async と Promise の組み合わせ
async function example() {
  return "Hello, World!";
}

example().then(result => console.log(result));  // "Hello, World!"

async 関数の性能

[編集]
  • async 関数は、非同期処理を直感的に扱えるため、コードの可読性やメンテナンス性が向上しますが、Promise を使用するため、性能面で若干のオーバーヘッドが発生する可能性があります。
  • ただし、通常の非同期操作においては、async/await を使用しても大きなパフォーマンス低下は見られません。

関連項目

[編集]

参考

[編集]