JS

Promise

初級

読み方:プロミス|英語:Promise

非同期処理の結果を表すオブジェクトで、「後で結果を返すよ」という約束だよ。いつ使う? APIからデータを取得する、ファイルを読み込むなど、時間がかかる処理の結果を受け取るときに使うよ。間違いやすいポイント: .then()の中でreturnを忘れると次のthenにundefinedが渡されるよ。また、.catch()を書き忘れるとエラーが握りつぶされるよ。

やさしい説明

Promise(プロミス)とは、非同期処理の結果を表すオブジェクトです。「約束」という意味で、「処理が完了したら結果を返すよ」という約束を表します。

ネット通販に例えると、注文した瞬間に「配送中」(pending)→ 届いたら「完了」(fulfilled)、届かなかったら「失敗」(rejected)です。

成功時は .then()、失敗時は .catch() で処理を書きます。async/await を使うとさらに読みやすく書けます。

図解:Promiseの3つの状態

Promise: pending→fulfilled(.then)またはrejected(.catch)

具体例・使い方

// 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を使います。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A