記録として残しておきたいブログ

主にプログラミングについて書きます

Node.js 指定した時間が経過したら関数を実行する。

環境

OS: Windows10
Node.js: v6.9.4

setTimeout <時間が経過したら関数を実行>

  • setTimeOutの公式ドキュメント
  • 指定した時間が経過したら指定した関数を実行する。
// test0.js
setTimeout(function() {
    console.log('good mornming!');
}, 1000);

test0.jsの出力結果

good morning!

実行から1000ミリ秒後に 'good morning!' と表示される。


setTimeout(callback, delay[, ...args])
引数

  • callback <Function>
    • 時間が経過したときに呼び出す関数
  • delay <number>
    • callbackを呼び出す前に待機する時間(ms)
  • ...args <any>
    • callbackを呼び出すときに渡すオプションの引数

処理

  • delayで指定したミリ秒後に1度callbackの関数を呼び出す。
  • 正確な時間(ms)ではない。できるだけ近い時間(ms)になっている
  • delay > 2147483647 or delay < 1 の時はdelayは1が設定される。
  • callbackが関数ではないときは TypeErrorがスローされる。

2つsetTimeout()を書いてみる

// test1.js
setTimeout(function() {
    console.log('good mornming!');
}, 1000);

setTimeout(function() {
    console.log('hello!');
}, 500);

test1.jsの出力結果

hello!
good morning!

Node.jsは非同期処理のため、 'hello!' が先に表示されてしまう。


順番に上から処理をしたい場合は asyncモジュールで定義されている関数を使うと良い。


参考サイト
Timers | Node.js v6.9.4 Documentation