JavaScriptのAsync/Awaitを使った非同期処理の最適な方法


  1. Async/Awaitの基本的な使い方: Async/Awaitは、非同期処理をより直感的に扱うための構文です。以下に基本的な使い方を示します。

    async function fetchData() {
     try {
       const response = await fetch('https://api.example.com/data');
       const data = await response.json();
       return data;
     } catch (error) {
       console.error('データの取得に失敗しました:', error);
       throw error;
     }
    }

    上記の例では、fetchData関数が非同期処理を行っています。awaitキーワードを使うことで、非同期な処理が完了するまで待機します。エラーハンドリングも行っており、エラーが発生した場合は適切に処理します。

  2. 複数の非同期処理の同時実行: Async/Awaitを使うことで、複数の非同期処理を同時に実行することも可能です。以下に例を示します。

    async function fetchData() {
     try {
       const [data1, data2] = await Promise.all([
         fetch('https://api.example.com/data1'),
         fetch('https://api.example.com/data2')
       ]);
       const parsedData1 = await data1.json();
       const parsedData2 = await data2.json();
       return [parsedData1, parsedData2];
     } catch (error) {
       console.error('データの取得に失敗しました:', error);
       throw error;
     }
    }

    上記の例では、Promise.allメソッドを使って複数の非同期処理を同時に実行しています。awaitキーワードを使って個々の非同期処理が完了するのを待機し、結果を取得しています。

  3. 非同期処理の逐次実行: 一部の場合では、非同期処理を逐次的に実行する必要があります。以下に例を示します。

    async function processItems(items) {
     for (const item of items) {
       await processItem(item);
     }
     console.log('処理が完了しました');
    }
    async function processItem(item) {
     try {
       // アイテムの処理
       console.log(`${item} を処理中...`);
     } catch (error) {
       console.error(`${item} の処理中にエラーが発生しました:`, error);
       throw error;
     }
    }

    上記の例では、processItems関数が与えられたアイテムを逐次的に処理します。awaitキーワードを使って各アイテムの処理が完了するのを待機しています。

このように、Async/Awaitを使うことで、JavaScriptにおける非同期処理の制御を容易にすることができます。さまざまな状況に応じて、上記の例を参考にして適切な方法を選択してください。