非同期処理を覚える!Node.jsのpromiseの使い方【初心者向け】

初心者向けにNode.jsのpromiseの使い方について分かりやすく解説しています。promiseは、非同期処理を実装することができ、可読性や保守性を高めることができるので、実務でも役立つ知識です。ぜひ覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Node.jsでpromiseを使う方法を解説します。

非同期処理を行うpromiseの書き方をインストールするところから説明しているので、実際に書いて理解していきましょう。

 

なお本記事は、TechAcademyのNode.jsオンライン講座の内容をもとに作成しています。

 

田島悠介

今回はpromiseというパッケージを使用してみよう。

大石ゆかり

田島メンター!promiseはどういう機能を持ったパッケージなんですか〜?

田島悠介

promiseは非同期処理を実装するときに使うんだ。さっそく見てみようか。

大石ゆかり

分かりました!

 

Node.jsのpromiseとは

Node.jsのpromiseは、非同期処理を可読性の高いコードで実装できます。

非同期処理とはページが更新された際などに、更新前と更新後を比較して足りない部分だけをデータ通信する処理のことです。この非同期処理の事をフロントエンド側の処理ではAjaxと呼ぶ事もあります。

 

Node.jsでも使用されているJavaScriptでは、非同期処理の際コールバック関数を使用します。しかし、処理が複雑になるに連れて、コールバック関数が入れ子になり、ソースコードを見た時に処理の内容が分かりづらくなります。

実務上でも、非同期処理実装時に、Node.jsのPromiseを利用することで、コールバック関数のの書き方を明確にし、可読性と保守性を高めることが出来ます。

 

Node.jsでpromiseを使う方法

promiseをインストールする

コマンド

npm install promise

解説

npm install promiseでnpmパッケージとしてのpromiseをインストールしています。

npmのインストール方法も知りたい方はチェックしておきましょう。

 

promiseの文法

ソースコード

var 変数 = require('promise');
変数(function (fulfilled, rejected) {
処理内容
}

解説

1行目のvar 変数 = require(‘promise’);では、promiseパッケージをrequireで読み込んで、変数に代入します。

変数とは値を入れる箱のようなものです。

2行目の変数(function (fulfilled, rejected) { }では、変数に代入したpromiseの処理を実際に使用していきます。

fulfilled(成功)とrejected(失敗)は引数と呼ばれるものです。引数が与えられることで、引数に応じた処理が可能となります。

 

田島悠介

promiseのインストール方法と、基本の書き方だよ。

大石ゆかり

npmを使ってパッケージをインストールするんでしたよね。

田島悠介

次は、実際にpromiseを使った処理を書いてみよう。

 

[PR] Node.jsで挫折しない学習方法を動画で公開中

promiseを実際に使ってみよう

URLにアクセスしたときの処理を書いてみよう

ソースコード

var Promise = require('promise');
var promise = new Promise(function (resolve, reject) {
  get('http://www.techacademy.jp', function (err, res) {
    if (err) reject(err);
    else resolve(res);
  });
});

promise().then(function() {
  alert('30歳からのプログラマー転職');
  }, function(err) {
  alert(err.message);
});

結果

30歳からのプログラマー転職

解説

1行目のvar Promise = require(‘promise’);では、1行目の変数Promise = require(‘promise’);では、promiseパッケージをrequireで読み込んで、変数Promiseに代入します。

2行目のvar promise = new Promise(function (resolve, reject) {では、1行目でpromiseパッケージを代入したPromise変数で処理を開始した後、結果をpromise変数に代入しています。

3行目のget(‘http://www.techacademy.jp’, function (err, res) {では、http://www.techacademy.jpにアクセスした際に、アクセス成功したか失敗した化の処理を開始しています。

4行目のif (err) reject(err);では、3行目のアクセスができなかった場合にエラーを返します。

5行目のelse resolve(res);では、3行目のアクセスが出来た場合にレスポンスを返します。

6行目の});では、3行目の処理を終了しています。

7行目の});では、2行目の処理を終了しています。

8行目のpromise( ).then(function( ) {では、2行目の小文字のpromise変数に代入された内容を元に、http://www.techacademy.jpへのアクセスが成功した場合の処理を開始しています。

9行目のalert(’30歳からのプログラマー転職’);では、アクセスが成功した場合に30歳からのプログラマー転職と表示されます。

10行目の}, function(err) {では、アクセスできなかった場合の処理を開始しています

11行目のalert(err.message);では、エラーメッセージを表示します。

12行目の});では、8行目の処理を終了しています。

 

まとめ

Node.jsのpromiseを使う方法を解説しました。

promiseをインストールし、実際に使ってみる流れをまとめているので、ぜひ実行してみてください。

Node.jsの学習サイトもまとめているので、合わせて参考にしてみてください。

 

田島悠介

promiseを使用した非同期処理の例だよ。

大石ゆかり

最終的にアクセスできたときの結果が表示されているということですね。

田島悠介

同じように非同期処理を行うものとして、asyncというパッケージがあるね。こちらは別のところで解説しよう。

大石ゆかり

分かりました。ありがとうございます!

 

また、オンラインのプログラミングスクールTechAcademyでは、Node.jsオンライン講座を開催しています。

Node.jsを使ってWebアプリケーションを開発することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。