●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

JavaScriptのPromiseとは?非同期処理をわかりやすく管理する方法

JavaScriptの非同期処理を扱ううえで欠かせないのが「Promise(プロミス)」です。
コールバック関数のネスト地獄を避け、より見通しの良いコードを書くための仕組みとして導入されました。

この記事では、Promiseの基本的な使い方から、実践的な活用方法までをわかりやすく解説します。

Promiseとは?

Promiseとは、非同期処理の「結果」を表すオブジェクトです。
今はまだ終わっていないけれど、将来的に「成功する」か「失敗する」かのどちらかになることを約束(promise)します。

Promiseの基本構文

const promise = new Promise(function(resolve, reject) {
  // 非同期処理
  if (成功した場合) {
    resolve(結果);
  } else {
    reject(エラー);
  }
});

resolve は処理が成功したときに呼び出し、reject は失敗したときに呼び出します。

thenで成功時の処理を記述

const promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve("成功しました");
  }, 1000);
});

promise.then(function(result) {
  console.log(result); // 成功しました
});

then は、Promiseが成功(resolve)されたときに呼び出されます。

catchでエラー処理を記述

const promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    reject("エラーが発生しました");
  }, 1000);
});

promise
  .then(function(result) {
    console.log(result);
  })
  .catch(function(error) {
    console.log(error); // エラーが発生しました
  });

catch は、Promiseが失敗(reject)されたときに実行されます。

Promiseの状態(ステート)

Promiseには3つの状態があります。

  • pending(保留):まだ処理中
  • fulfilled(成功)resolve() が呼ばれた状態
  • rejected(失敗)reject() が呼ばれた状態

Promiseチェーン

then を連続して書くことで、処理を順番につなげることができます。

new Promise(function(resolve) {
  resolve(1);
})
.then(function(result) {
  console.log(result); // 1
  return result + 1;
})
.then(function(result) {
  console.log(result); // 2
  return result + 1;
});

Promise.allとPromise.race

複数のPromiseを同時に処理したい場合は、Promise.allPromise.race が便利です。

Promise.all

Promise.all([
  Promise.resolve("A"),
  Promise.resolve("B")
]).then(function(results) {
  console.log(results); // ["A", "B"]
});

Promise.race

Promise.race([
  Promise.resolve("A"),
  Promise.resolve("B")
]).then(function(result) {
  console.log(result); // 最初に終わったもの("A")
});

まとめ

  • Promiseは非同期処理の結果を表すオブジェクト
  • then で成功時、catch で失敗時の処理を記述
  • 状態には pending / fulfilled / rejected の3つがある
  • Promiseチェーンで複数の処理を順番に実行できる
  • Promise.allPromise.race で複数のPromiseをまとめて処理できる

PromiseはJavaScriptの非同期処理を効率的に扱うための基本ツールです。
コールバック関数よりも見やすく、エラー処理もしやすくなるため、ぜひ使い方をマスターしておきましょう。

 

JavaScript関連用語集

−−−−−  JavaScript  −−−−−

JavaScriptの変数とは?初心者にもわかりやすく解説

JavaScriptの定数(const)とは?使い方と注意点をわかりやすく解説

JavaScriptの関数とは?基本から使い方まで丁寧に解説

JavaScriptの配列とは?基本の使い方から応用まで解説

JavaScriptのオブジェクトとは?基本の使い方から応用まで解説

JavaScriptのプロパティとは?基本から使い方までわかりやすく解説

JavaScriptのメソッドとは?基本と使い方をわかりやすく解説

JavaScriptのスコープとは?基礎からしっかり理解しよう

JavaScriptのクロージャとは?仕組みと使い方をわかりやすく解説

JavaScriptのコールバック関数とは?仕組みと使い方をやさしく解説

JavaScriptの非同期処理とは?基本から使い方までわかりやすく解説

JavaScriptのPromiseとは?非同期処理をわかりやすく管理する方法

JavaScriptのasync / awaitとは?Promiseをもっと簡単に書く方法

JavaScriptのイベントとは?クリックや入力に反応する仕組みを解説

JavaScriptのイベントリスナーとは?イベント処理の基本を解説

JavaScriptのDOMとは?Webページを操作する基本をやさしく解説

JavaScriptのJSONとは?データのやりとりに使われる基本形式を解説

JavaScriptのデータ型とは?基本の種類と使い方をわかりやすく解説

JavaScriptの型変換とは?自動変換と明示的変換の仕組みを解説

JavaScriptのnullとは?「何もない」を明示する特別な値

JavaScriptのundefinedとは?「未定義」を表す特別な値を理解しよう

JavaScriptのNaNとは?数値にならないことを示す特別な値を解説

JavaScriptのループとは?繰り返し処理の基本と使い方を解説

JavaScriptのif文とは?条件に応じた処理の書き方を解説

JavaScriptのswitch文とは?複数の条件分岐をすっきり書く方法

JavaScriptのクラスとは?オブジェクト指向の基本構文を解説

JavaScriptの継承とは?クラスの機能を引き継ぐ仕組みを解説

JavaScriptのモジュールとは?ファイル分割と再利用を可能にする仕組みを解説

JavaScriptの即時関数(IIFE)とは?その仕組みと使いどころを解説

JavaScriptのグローバル汚染を防ぐ方法とは?安全なスクリプト管理の基本