icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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というパッケージがあるね。こちらは別のところで解説しよう。

大石ゆかり

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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバーでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。

 

小学生がUnityでオリジナルAndroidアプリをGooglePlayでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がノーコードでSNS型PWAアプリリリースなど、ボランティアプログラミング教育活動行っている。

 

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する