まとめ「sleep関数」とは?今回は、指定した時間が経過したあとにプログラムの処理を実行するようなケースを想定したsleep関数を自作していきましょう。Aという処理を実行したあとに数秒間待ってから次の処理を実行したいようなケースや、デバッグなどで処理の流れを確認したいような時に有効です。このような処理を実現する関数(sleep)は一般的なプログラム言語だと標準で提供されていますが、Node.jsには実装されていません。同じ用途で使えるメソッドはNode.jsにもあるので、これらを活用しながらsleep関数を作っていきますのでぜひ参考にしてみてください。「sleep関数」の作り方この章では、もっとも基本的なsleep関数の作り方についてご紹介していきます。setTimeout()を活用した自作関数の作り方について学んでいきます。setTimeout()を使ってsleep関数を作るまずは、setTimeout()のおさらいをしておきましょう。setTimeout()は、指定したミリ秒の間だけ処理を遅らせて実行することができるメソッドです。基本的な構文は以下の通りです。待ち時間)待ち時間はミリ秒を指定するという点に注意しておきましょう。3秒後にアラートを表示させるには次のように記述します。3000);第1引数に指定した関数は、設定した時間経過後に実行するのが分かりますね。実は、今回やりたいsleep関数はこのsetTimeout()を使えばそのまま同じようなことが実現できます。sleepという名称の関数にラップしておきましょう。}実際の使い方については次の章で解説していきます。setTimeout()についてもっと詳しく知りたい方は、次の記事で体系的にまとめているのでぜひ参考にしてみてください。2019年1月25日sleep関数の実行方法それでは、先ほど作成したsleep関数を実行してみましょう。3秒経過後にコンソールへメッセージを表示するには次のように記述します。console.log('3秒経過しました');});注意が必要なのは、このsleep関数内でさらにsleep関数を実行して階層構造を作ってしまうことです。});});このように記述すると設定した時間通りに処理が実行できるわけですが、プログラムが見づらくなり管理ができなくなってきます。そこで、sleep関数で複雑な処理をしたい場合は次の章以降で解説するメソッドを利用していきましょう!Promiseによるsleep関数の作り方Promiseは非同期処理を効率よく記述できるメソッドですが、sleep関数を複数実行する際にも有効な手段と言えます。先ほどsetTimeout()を利用して作成したsleep関数をPromiseを利用して作り直すと次のようになります。新たにPromiseオブジェクトを作り、その中でsetTimeout()を実行していますね。このように記述することで、then()を使った呼び出しができるようになるので複数のsleep関数を実行しても階層が深くなることはありません。})複数繋げる場合は、1つずつのthen()の中でsleep関数をreturnすることを忘れないようにしましょう。基本的なPromise処理についてまだ不安のある方は、次の記事で体系的にまとめているので参考にしてみてください。awaitによるsleep関数を作ってみましょう。awaitを使うと、前章のthen()を使ったメソッドチェーンよりもさらに効率よく複数のsleep関数を記述できるようになります。作り方は、これまでと同様にPromiseオブジェクトを作成しておきます。あとは、asyncで設定した関数内にawaitを使ったPromise処理を記述するだけです。start();コードがスッキリして直感的に理解しやすくなりましたね。ちなみに、Node.js用のasyncパッケージを活用したプログラミング方法もあるので、次の記事をぜひ参考にしてみてください。2019年5月22日sleepモジュールの使い方この章では、Node.jsのモジュールとして提供されているsleep関数の使い方について見ていきましょう!まずは、npmを使ってsleepモジュールをインストールします。sleep次に、require()でNode.jsから利用できるようにします。require('sleep');これで、sleep関数が使えるようになりました。3秒後にメッセージをコンソールへ出力するには次のように実行します。sleep.sleep(3);console.log('3sec');sleepモジュールでは、引数に秒数を指定することでその時間分だけ待ち時間になります。「msleep()」メソッドを利用するとミリ秒単位で待ち時間を指定することも可能です。まとめ今回は、Node.jsで一定時間経過後に処理を実行するsleep関数の自作方法について学習をしました。awaitが利用できればもっとも簡潔に記述することができる上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。無料体験レッスンを予約する書いた人マサトフリーランスのIT系ライターを8年従事。侍ブログ編集部としては、これまで270記事以上の記事を執筆。Linuxを3年学習。個人プロダクトのWebメディア・アプリ作成経験あり。