Promise
初級読み方:プロミス|英語:Promise
非同期処理の結果を表すオブジェクトで、「後で結果を返すよ」という約束だよ。いつ使う? APIからデータを取得する、ファイルを読み込むなど、時間がかかる処理の結果を受け取るときに使うよ。間違いやすいポイント: .then()の中でreturnを忘れると次のthenにundefinedが渡されるよ。また、.catch()を書き忘れるとエラーが握りつぶされるよ。
やさしい説明
Promise(プロミス)とは、非同期処理の結果を表すオブジェクトです。「約束」という意味で、「処理が完了したら結果を返すよ」という約束を表します。
ネット通販に例えると、注文した瞬間に「配送中」(pending)→ 届いたら「完了」(fulfilled)、届かなかったら「失敗」(rejected)です。
成功時は .then()、失敗時は .catch() で処理を書きます。async/await を使うとさらに読みやすく書けます。
図解:Promiseの3つの状態
具体例・使い方
// APIからデータを取得
fetch("https://api.example.com/users")
.then(res => res.json()) // 成功: JSONに変換
.then(data => console.log(data))
.catch(err => console.error("失敗:", err));
// async/awaitで書くと読みやすい
async function getUsers() {
const res = await fetch("https://api.example.com/users");
const data = await res.json();
return data;
} いつ使う?
API通信(fetch)、ファイル読み込み、タイマー処理など、「時間がかかる処理」の結果を扱うときに使います。Web開発では毎日使う概念です。
間違いやすいポイント
❌ .catch()を書き忘れてエラーが握りつぶされる
Promiseのエラーは .catch() か try-catch で必ず処理しましょう。書き忘れるとエラーが無視されてバグの原因になります。
よくある疑問
Q: async/awaitとthen/catchの違いは?
A: 同じPromiseを扱いますが、async/awaitの方が同期的な見た目で読みやすいコードになります。どちらを使ってもOKです。
Q: Promiseの3つの状態とは?
A: pending(処理中)、fulfilled(成功)、rejected(失敗)の3つです。一度fulfilledかrejectedになると変わりません。
Q: Promise.allとは?
A: 複数のPromiseを並列実行し、全て完了するのを待ちます。1つでも失敗すると全体が失敗になります。全結果が欲しいならPromise.allSettledを使います。
関連用語
📖 関連レッスン
レッスンを見る →