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
を使用しても大きなパフォーマンス低下は見られません。