0Pricing
JavaScript Academy · レッスン

Promise.all / any / race / allSettled — 適切なツールを選ぶ

Promiseのコンビネータall、any、race、allSettledを練習します。それぞれの成功・失敗時の動作と使い分けを学びます。

「Promise.all / any / race / allSettled — 適切なツールを選ぶ」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。

コンビネーターの概要

目標:4つのヘルパーとその動作を学びます。

  • all:すべてを待機し、早期に失敗
  • any:最初の成功
  • race:最初にsettledになったもの(成功またはエラー)
  • allSettled:すべての結果
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト1

Promise.allの基本

Promise.allは結果の配列でresolveされます。1つでもrejectされると全体がrejectされます。

// Small helpers for examples
function delay(ms, value, shouldFail = false) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      if (shouldFail) reject(new Error(String(value)));
      else resolve(value);
    }, ms);
  });
}

// Promise.all waits for all; rejects fast on first error
Promise.all([
  delay(10, "A"),
  delay(5, "B")
]).then(function (vals) {
  console.log("all:", vals);
});
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト2

Promise.anyの基本

Promise.anyは最初に成功した結果でresolveされます。すべての入力がrejectされた場合にのみrejectされます。

// Promise.any gives the first fulfilled value
Promise.any([
  delay(8, "ok-1"),
  delay(3, "ok-2"),
  delay(6, "ok-3")
]).then(function (v) {
  console.log("any:", v);
}).catch(function (e) {
  console.log("any failed:", e.message);
});
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト3

Promise.raceの基本

Promise.raceは、最初にsettledになったものを選びます。resolveの場合もrejectの場合もあります。

// Promise.race settles with the first to finish (success or error)
Promise.race([
  delay(5, "win"),
  delay(7, "boom", true)
]).then(function (v) {
  console.log("race resolved:", v);
}).catch(function (e) {
  console.log("race rejected:", e.message);
});
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト4

Promise.allSettledの基本

Promise.allSettledは常に、すべての入力に対応するステータスオブジェクトの配列でresolveされます。

// Promise.allSettled waits for all and reports each outcome
Promise.allSettled([
  delay(4, "A"),
  delay(6, "X", true)
]).then(function (results) {
  console.log("allSettled:", results.map(function (r) { return r.status; }));
});
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト5

どれを使うか

選び方:

  • all:すべての結果が必要で、どのエラーでも早期に失敗させる場合。
  • any:最初の成功を受け入れる場合(フォールバック用のソースなど)。
  • race:最初に完了するものを選ぶ場合(タイムアウトのパターンなど)。
  • allSettled:確認するためにすべての結果を集める場合。
Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト6

コンビネーター選択クイズ

簡単な確認:最初にfulfilledになった結果です。

Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト7

振り返り

振り返り:「すべてが必要」ならall、「最初の成功」ならany、「最初にsettledになったもの」ならrace、短絡評価せずにすべての結果を確認するならallSettledを使います。

Promise.all / any / race / allSettled — 適切なツールを選ぶ — イラスト8

よくある質問

「Promise.all / any / race / allSettled — 適切なツールを選ぶ」レッスンは無料ですか?

はい。「Promise.all / any / race / allSettled — 適切なツールを選ぶ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。

「Promise.all / any / race / allSettled — 適切なツールを選ぶ」で何を学びますか?

Promiseのコンビネータall、any、race、allSettledを練習します。それぞれの成功・失敗時の動作と使い分けを学びます。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。

「Promise.all / any / race / allSettled — 適切なツールを選ぶ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. イベントループとタスク・マイクロタスクの基礎
  2. Promise — 状態、チェーン、エラー処理
  3. Promise.all / any / race / allSettled — 適切なツールを選ぶ
← JavaScript Academyに戻る