現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Ajax / fetch / API(非同期処理)

【JavaScript入門】Promiseの基礎|非同期処理の仕組み・then/catchの使い方を初心者向けにわかりやすく解説

投稿日:

この記事で分かること

  • Promiseとは何か(非同期処理の基本)
  • Promiseの3つの状態(pending / fulfilled / rejected
  • then / catch の使い方
  • コールバック地獄を解消する仕組み
  • 実務でのPromiseの使いどころ

Promise は、JavaScript の非同期処理を安全かつ分かりやすく扱うために導入された重要な仕組みです。
この記事では、Promise の基本概念から3つの状態、then / catch の使い方、そしてコールバック地獄を解消する仕組みまで、非同期処理の基礎として必ず押さえておきたいポイントを分かりやすく解説します。



Promiseとは?

Promise(プロミス) は、JavaScript の非同期処理を扱うための仕組みです。
「いつ終わるかわからない処理」を安全に扱うために使われます。

例えば以下のような処理は非同期です。

  • API通信(fetch / XHR)
  • ファイル読み込み
  • setTimeout

Promise を使うことで、非同期処理の完了後に
then() で続きの処理を書けるようになります。



Promise の3つの状態

状態 意味
pending 処理中
fulfilled 成功(resolve
rejected 失敗(reject

Promise は「成功」か「失敗」のどちらかに必ず落ち着きます。

Promise を自分で作る基本構文


const promise = new Promise((resolve, reject) => {
  const success = true;

  if (success) {
    resolve("成功しました");
  } else {
    reject("失敗しました");
  }
});

resolve → 成功
reject → 失敗
を表します。

then / catch の使い方


promise
  .then(result => {
    console.log("成功:", result);
  })
  .catch(error => {
    console.log("失敗:", error);
  });

then は成功時、catch は失敗時に実行されます。

非同期処理の例:setTimeoutPromise


function wait(ms) {
  return new Promise(resolve => {
    setTimeout(() => resolve(ms + "ms 経過"), ms);
  });
}

wait(1000).then(msg => console.log(msg));

Promise を使うと、非同期処理を「順番に」書けるようになります。

Promise チェーン(順番に処理する)


wait(1000)
  .then(() => wait(1000))
  .then(() => wait(1000))
  .then(() => console.log("合計3秒経過"));

Promise を使うと、
コールバック地獄(callback hell) を避けられます。

コールバック地獄とは?

昔の非同期処理は以下のようにネストが深くなりがちでした。


// コールバック地獄の例
func1(() => {
  func2(() => {
    func3(() => {
      console.log("完了");
    });
  });
});

Promise を使うと、これがフラットに書けます。


func1()
  .then(func2)
  .then(func3)
  .then(() => console.log("完了"));

Promisefetch と相性が良い

fetchPromise を返すため、
then / catch で自然に扱えます。


fetch("/api")
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));



Promise に関するよくある質問(FAQ)

Q1

Promise は何のために使うのですか?

A

非同期処理を安全に扱い、処理の完了後に続きの処理を書けるようにするためです。

Q2

thencatch の違いは何ですか?

A

then は成功時、catch は失敗時に実行されます。

Q3

Promiseasync / await の関係は?

A

async / awaitPromise をより読みやすく書くための構文です。Promise が土台になっています。

Q4

Promise は今でも使われていますか?

A

はい。fetchasync / await の内部でも Promise が使われており、現代でも必須の知識です。



まとめ

Promise は JavaScript の非同期処理の基礎であり、
fetchasync / await を理解するための土台です。

  • Promise は「成功」か「失敗」の結果を持つ
  • then → 成功時、catch → 失敗時
  • コールバック地獄を解消する
  • fetch などの非同期処理で必須

次に学ぶ async / await と組み合わせることで、
さらに読みやすい非同期コードが書けるようになります。



関連記事

【JavaScript入門】APIレスポンスを画面に反映する方法|fetchで取得したデータをDOMに表示する手順を初心者向けに解説

この記事で分かること fetch で取得したデータを画面に表示する方法 JSON を DOM に反映する基本パターン リスト表示・テーブル表示の実装例 ローディング表示・エラー表示の作り方 実務で使う …

【JavaScript入門】async/awaitの使い方|Promiseをより簡単に書ける非同期処理の基本を初心者向けに解説

この記事で分かること async / await の基本構文 Promise をより読みやすく書く方法 fetch と組み合わせた実用的な書き方 try/catch によるエラー処理 実務での asy …

【JavaScript入門】APIのエラー処理|HTTPステータス・例外処理・fetch/XHRの違いを初心者向けに解説

この記事で分かること API通信で発生するエラーの種類 HTTPステータスコードの判定方法 fetch と XHR のエラー処理の違い try/catch を使った例外処理 実務でのエラー処理のベスト …

【JavaScript入門】XMLHttpRequest(XHR)の使い方|GET・POSTリクエストの実装方法を初心者向けに解説

この記事で分かること XMLHttpRequest(XHR)の基本構造 GETリクエストの書き方 POSTリクエストの書き方 readyState・status の扱い方 実務での注意点(非同期処理・ …

【JavaScript入門】Ajaxとは?仕組み・特徴・XMLHttpRequestを初心者向けにわかりやすく解説

この記事で分かること Ajaxとは何か(技術の組み合わせで成り立つ概念) 非同期通信の仕組みとメリット XMLHttpRequestの役割と特徴 Googleマップやサジェストで使われる理由 Ajax …

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

レンタルサーバー エックスサーバー

-Ajax / fetch / API(非同期処理)

執筆者: