情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで任意時間毎に非同期的な処理を実行する

2016/07/18

setInterval関数

任意時間毎に非同期的な処理を実行するにはsetInterval関数を使用します。

var io = setInterval(function () {
}, 100);

第1引数に非同期的な処理を関数として指定します。

第2引数に非同期的な処理の実行間隔をミリ秒単位で指定します。ただし、2147483648以上の値や0以下の値を指定した場合には1となります。

返り値として任意時間毎に実行される非同期的な処理を表すintervalObjectクラスのインスタンスが得られます。

なお、この関数は任意時間毎丁度に必ず処理を実行するものではないことに注意してください。任意時間後丁度に別の処理が実行されている場合にはその処理の完了を待機することになりますし、その処理が完了しても別の待機中の処理がある場合にはその処理の実行が優先される可能性もあります。

clearInterval関数

任意時間毎に実行される非同期的な処理の実行を終了するにはclearInterval関数を使用します。

clearInterval(io);

第1引数にintervalObjectクラスのインスタンスを指定します。

サンプルコード1

set-interval.js

var cleared = false;
var io = setInterval(function () {
    console.log('YeY');
}, 100);

process.stdin.on('data', function (data) {
    if (!cleared) {
        clearInterval(io);
        cleared = true;
        console.log('stopped.');
    }
    else {
        console.log('exited.');
        process.exit(0);
    }
});

実行結果

C:\work\node>node set-interval.js
YeY
YeY
YeY
YeY
YeY
YeY
YeY
YeY
YeY
YeY
YeY

stopped.

exited.

サンプルコード2

set-interval-for.js

var util = require('util');

var i = 0;
var io = setInterval(function () {
    util.log('YeY');
    i++;
    if (i === 20) {
        clearInterval(io);
    }
}, 100);

var ifor = 0;
var iofor = setInterval(function () {
    for (var i = 0; i < 1000000000; i++) {}
    ifor++;
    if (ifor === 5) {
        clearInterval(iofor);
    }
}, 100);

実行結果

C:\work\node>node set-interval-for.js
21 Apr 11:25:37 - YeY
21 Apr 11:25:39 - YeY
21 Apr 11:25:40 - YeY
21 Apr 11:25:41 - YeY
21 Apr 11:25:42 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:44 - YeY
21 Apr 11:25:45 - YeY
21 Apr 11:25:45 - YeY
21 Apr 11:25:45 - YeY
21 Apr 11:25:45 - YeY
21 Apr 11:25:45 - YeY
21 Apr 11:25:45 - YeY

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js