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の基本
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.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.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.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; }));
});

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

コンビネーター選択クイズ
簡単な確認:最初にfulfilledになった結果です。

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

よくある質問
「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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- イベントループとタスク・マイクロタスクの基礎
- Promise — 状態、チェーン、エラー処理
- Promise.all / any / race / allSettled — 適切なツールを選ぶ