JavaScript/async
表示
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関数の戻り値は常にPromiseです。返されたPromiseは、関数内で明示的にreturnされた値を解決します。return文がない場合、async関数はPromise.resolve(undefined)を返します。
// async 関数の戻り値 async function example() { return 42; } example().then(result => console.log(result)); // 42
- 非同期関数内でエラーが発生した場合、そのエラーは
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関数は、非同期処理を直感的に扱えるため、コードの可読性やメンテナンス性が向上しますが、Promiseを使用するため、性能面で若干のオーバーヘッドが発生する可能性があります。- ただし、通常の非同期操作においては、
async/awaitを使用しても大きなパフォーマンス低下は見られません。