情報アイランド

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

Node.jsで直後に非同期的な処理を実行する

2016/07/18

setImmediate関数

直後に非同期的な処理を実行するにはsetImmediate関数を使用します。

var io = setImmediate(function () {
});

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

返り値として直後に実行される非同期的な処理を表すimmediateObjectクラスのインスタンスが得られます。

なお、この関数は直後に必ず処理を実行するものではないことに注意してください。現在実行されている処理の完了は待機することになりますし、その処理が完了しても先に登録された直後実行処理がある場合にはその処理の実行が優先されます。

clearImmediate関数

直後に実行される非同期的な処理の実行を中止するにはclearImmediate関数を使用します。

clearImmediate(io);

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

サンプルコード1

set-immediate.js

var cleared = false;
var func = function () {
    console.log('YeY');
    io = setImmediate(func);
}
var io = setImmediate(func);

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

実行結果

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

YeY
YeY
deleted.

exited.

サンプルコード2

set-immediate-for.js

var util = require('util');

setImmediate(function () {
    util.log('YeY');
});
util.log('immediate is setted.');

for (var i = 0; i < 10000000000; i++) {}

実行結果

C:\work\node>node set-immediate-for.js
28 Apr 11:49:56 - immediate is setted.
28 Apr 11:50:14 - YeY

サンプルコード3

set-immediate-for-2.js

var util = require('util');

var cleared = false;
var func = function () {
    util.log('YeY');
    io = setImmediate(func);
}
var io = setImmediate(func);
var funcfor = function () {
    util.log('for YeY');
    for (var i = 0; i < 1000000000; i++) {}
    iofor = setImmediate(funcfor);
}
var iofor = setImmediate(funcfor);

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

実行結果

C:\work\node>node set-immediate-for-2.js
28 Apr 11:55:04 - YeY
28 Apr 11:55:04 - for YeY
28 Apr 11:55:06 - YeY
28 Apr 11:55:06 - for YeY
28 Apr 11:55:07 - YeY
28 Apr 11:55:07 - for YeY
28 Apr 11:55:08 - YeY
28 Apr 11:55:08 - for YeY
28 Apr 11:55:09 - YeY
28 Apr 11:55:09 - for YeY
28 Apr 11:55:10 - YeY
28 Apr 11:55:10 - for YeY
28 Apr 11:55:11 - YeY
28 Apr 11:55:11 - for YeY
28 Apr 11:55:13 - YeY
28 Apr 11:55:13 - for YeY
28 Apr 11:55:14 - YeY
28 Apr 11:55:14 - for YeY

28 Apr 11:55:15 - YeY
28 Apr 11:55:15 - for YeY
deleted.

exited.

関連

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

-Node.js