{category}

JavaScript - Promise

Promise.all()

プロミス オール(非同期処理

意味 複数処理の完了待ち


Promise.all()とは?

Promise.all()は、複数のPromiseオブジェクトが全て成功するのを待つためのメソッドです。

Promise.all()の具体的な使い方

複数の非同期処理を並行して実行する例

const fetchUser = (id) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve({ id: id, name: `ユーザー${id}` });
    }, Math.random() * 1000);
  });
};

const userIds = [1, 2, 3];
const userPromises = userIds.map(id => fetchUser(id));

Promise.all(userPromises)
  .then(users => {
    console.log('全てのユーザー情報:', users);
  })
  .catch(error => {
    console.error('エラーが発生しました:', error);
  });

👇出力結果

全てのユーザー情報: [
  { id: 1, name: 'ユーザー1' },
  { id: 2, name: 'ユーザー2' },
  { id: 3, name: 'ユーザー3' }
]

このコードでは、複数のユーザー情報を非同期で取得し、Promise.allを使用して全ての取得が完了するのを待っています。取得完了後、全てのユーザー情報をまとめて表示します。

Promise.all()に関するよくある質問

Q. Promise.allの主な用途は?
A. Promise.allは、複数の非同期処理を並行して実行し、全ての処理が完了するのを待つ場合に使用します。例えば、複数のAPIから同時にデータを取得する場合などに便利です。
Q. 全てのPromiseが成功しないと?
A. Promise.allは、渡されたPromiseのうち1つでも失敗(reject)すると、即座に失敗として扱われます。この場合、最初に失敗したPromiseのエラーがcatchハンドラに渡されます。
Q. Promise.allの戻り値の順序は?
A. Promise.allの結果は、渡されたPromiseの配列と同じ順序で結果が格納された配列になります。これは、個々のPromiseの完了順序に関係なく、元の順序が保持されることを意味します。
Q. 空の配列を渡すとどうなる?
A. Promise.allに空の配列を渡すと、即座に解決(resolve)される空の配列を返すPromiseが返されます。これは、「すべての要素」が既に完了しているとみなされるためです。

Promise.all()が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、JavaScriptのPromise.all()やマイクロタスクキュー、clearInterval()、非同期ジェネレータ、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


JavaScriptを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!JavaScriptはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

マイクロタスクキュー

優先実行されるタスク

種類: イベントループとタスクキュー

clearInterval()

定期実行を中止

種類: その他の非同期機能

非同期ジェネレータ

非同期で値を生成

種類: 非同期イテレーションとジェネレータ

bind

関数にthisを固定

種類: 関数の実行コンテキスト

while

条件が真である間、繰り返すループ

種類: ループ