IDEA HACK
コンテンツ
  • ブログ
IDEA HACK
IDEA HACK
コンテンツ
  • ブログ
  1. IDEA HACK
  2. コース
  3. JavaScript
  4. 基本
  5. JavaScriptで処理のタイミングをコントロールするタイミングを覚えよう
  6. JavaScriptで非同期処理を実装するPromiseオブジェクトの基本概念

JavaScriptで非同期処理を実装するPromiseオブジェクトの基本概念

2020-09-01 2020-09-09

JavaScriptで非同期処理を実装するPromiseオブジェクトの使い方

JavaScriptで非同期処理を実装するにはPromiseオブジェクトを利用します。

Promiseを利用すると非同期処理が扱いやすくなり、コードの可読性も上昇します。

fetch()メソッドなど、ブラウザー標準の機能にもPromiseは取り入れられており、await・async属性などの記述方法の基本になっているので、習得しておくと良いでしょう。

オブジェクト

オブジェクト意味返り値
new Promise(関数)Promiseを作成するPromiseインスタンス
resolve(引数)Promiseインスタンス内で利用され、非同期処理の終了(成功)を宣言するメソッド。Promiseインスタンス.then(関数)の関数に対して引数の値を渡すことができる。なし
reject(引数)Promiseインスタンス内で利用され、非同期処理の終了(失敗)を宣言するメソッド。Promiseインスタンス.catch(関数)の関数に対して引数の値を渡すことができる。なし
Promiseインスタンス.then(関数)成功した時のコールバック関数を呼び出し実行Promise
Promiseインスタンス.catch(関数)失敗した時のコールバック関数を呼び出し実行Promise
Promise.all(配列)複数のPromiseを並列に実行するPromise
Promiseオブジェクトの仕様

Promiseのコンストラクターの引数(new Promise(関数)の関数部分)には非同期処理を行う関数を指定します。

処理の成功・失敗時の処理の場合分け

Promiseオブジェクトは、処理が成功した時と失敗した時に別々の関数を実行する機能を持っています。

成功時・失敗時それぞれの流れは下記の通りです。

補足

処理の成功・失敗の判定処理は自然に行われる物ではなく、私たちが判定を下すということに注意してください。

処理が成功した時はresolve()メソッドを呼び出し、処理が失敗した時はreject()メソッドを呼び出すことで、処理の失敗と成功のいずれかなのかをPromiseインスタンスに伝えることが必要です。

処理が成功した時

非同期処理の完了した物として処理を行いたい場合は、resolve()メソッドを呼び出し、処理が成功した物として認識させます。

そして、Promiseインスタンス.then(関数)を定義しておくことで、resolve()メソッドが呼ばれた段階で後に続けたい関数を実行させることができます。

また、resolve()メソッドに引数を渡しておくと、それはPromiseインスタンス.then(関数)に渡されます。

まとめると、処理が成功した時のPromiseの挙動は次のようなフローになります。

  1. new Promise(関数)でインスタンスを作成して、引数の関数の非同期処理を開始
  2. 非同期処理されている関数で、resolve()メソッドを呼び出し、非同期処理が成功して終了したものと判定する。またそれをPromiseインスタンスに伝える。
  3. 非同期処理が成功して終了しているので、Promiseインスタンス.then(関数)の形で追加関数が定義されていれば、それを実行する

処理が失敗した時

非同期処理の失敗した物として処理を行いたい場合は、reject()メソッドを呼び出し、処理は失敗した物として認識させます。

そして、Promiseインスタンス.catch(関数)を定義しておくことで、reject()メソッドが呼ばれた段階で後に続けたい関数を実行させることができます。

また、reject()メソッドに引数を渡しておくと、それはPromiseインスタンスcatch(関数)に渡されます。

まとめると、処理が成功した時のPromiseの挙動は次のようなフローになります。

  1. new Promise(関数)でインスタンスを作成して、引数の関数の非同期処理を開始
  2. 非同期処理されている関数で、reject()メソッドを呼び出し、非同期処理が失敗して終了したものと判定する。また、それをPromiseインスタンスに伝える。
  3. 非同期処理が失敗して終了しているので、Promiseインスタンス.catch(関数)の形で追加関数が定義されていれば、それを実行する
コースへ戻る
次の レッスン
投稿者
KAZU
「Webデザインとプログラミングを独学 → 独自プロダクトとサブスクリプションサービスの構築 → 学習内容をコースとして提供」を繰り返しながら企業でも働く兼業ディベロッパーです。
JavaScript 基本
JavaScriptで処理のタイミングをコントロールするタイミングを覚えよう
JavaScriptで非同期処理を実装するPromiseオブジェクトの基本概念
JavaScriptで一定時間後に処理を行うsetTimeout()メソッドの使い方
JavaScriptで一定時間後に行う予定の処理を解除するclearTimeout()メソッドの使い方
JavaScriptで一定時間ごとに同じ関数を繰り返し処理するsetInterval()メソッドの使い方
JavaScriptで一定時間ごとに繰り返される処理を解除するclearInterval()メソッドの使い方

最新記事

Twitterのハッシュタグをつける時によく検索される人気なものを探してつける方法
Twitter
2021-01-09
WordPressにソーシャルボタンを追加する際に便利な4つのプラグイン
WordPress
2021-01-08
Twitterのベストな投稿時間とは?
ソーシャルメディア
2021-01-07
WordPressのログインURLを変更してログインのフローをハッカーが予測できないようにカスタマイズする方法
WordPress
2021-01-06
WordPressにGoogleのreCAPTCHA認証プラグインを導入し、不正ログイン対応を強化する方法
WordPress
2021-01-05

法務・ルール

  • 利用規約
  • プライバシーポリシー
  • 特定商法取引法に基づく表記

お問い合わせ

  • お問い合わせ
  • メールマガジンの購読設定

サービス

  • IDEA HACK
  • IDEA FACTORY

Copyright © All rights reserved by Brandia