JavaScript「プロミスの使用」要点まとめ
Promiseの基本
- Promise(プロミス)とは:
「非同期処理の結果(成功 or 失敗)」を表すオブジェクト。
→ まだ終わっていない処理の「将来の値」を扱う仕組み。
Promiseの3つの状態
| 状態 | 意味 |
|---|---|
pending | 保留中(まだ結果が出ていない) |
fulfilled | 成功(結果が返ってきた) |
rejected | 失敗(エラーなどで処理できなかった) |
基本メソッド
| メソッド | 目的 | タイミング |
|---|---|---|
.then(onFulfilled) | 成功時の処理 | Promiseがfulfilledになったら実行 |
.catch(onRejected) | 失敗時の処理 | Promiseがrejectedになったら実行 |
.finally(onFinally) | 終了後の共通処理 | 成功・失敗どちらでも最後に実行 |
⚠️ すべての
.then/.catchは 新しい Promise を返す
→ チェーン(thenチェーン)で次の処理をつなげられる。
Promiseチェーン
複数の非同期処理を順番に実行できる。
doSomething()
.then(result => doSomethingElse(result))
.then(final => console.log(final))
.catch(error => console.error(error));
JavaScript✅ ネストせずに順番の処理を書ける
✅ エラーは最後の .catch() で一括処理
Promiseを自分で作る
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
wait(1000).then(() => console.log("1秒後に実行"));
JavaScript
new Promise((resolve, reject) => { ... })
の中で成功ならresolve(), 失敗ならreject()を呼ぶ。
Promiseの合成
複数の非同期処理をまとめて扱う。
| メソッド | 動作 |
|---|---|
Promise.all([p1, p2]) | 全て成功→成功。1つでも失敗→失敗。 |
Promise.allSettled([p1, p2]) | 全部終わるまで待ち、成功/失敗両方の結果を返す。 |
Promise.race([p1, p2]) | 最初に終わったものの結果を返す。 |
よくある注意点
.thenの中でPromiseを返さないと次の.thenが待たずに実行される。.catchの後は成功扱いで次の.thenが実行される(再スローしない限り)。- 非同期処理の完了はイベントループの「マイクロタスク」で後回しにされる。
- 乱用せず、
async / awaitと組み合わせるとより読みやすくなる。
まとめイメージ
Promise
├─ pending(待機中)
├─ fulfilled → then() に進む
└─ rejected → catch() に進む
↓
finally()(どちらでも最後に)
