情報アイランド

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

Node.jsで次のイベントループで非同期的な処理を実行する

2016/07/18

次のイベントループで非同期的な処理を実行するにはprocess.nextTick関数を使用します。

process.nextTick(function () {
});

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

なお、前のイベントループにおいて複数回process.nextTick関数を呼び出したことにより次のイベントループで実行する処理が複数登録されている場合には全ての処理を順番に実行します。

また、第1引数の関数の中でprocess.nextTick関数が再び呼び出され、処理が登録された場合には現在のイベントループで処理が実行されます。次のイベントループで処理が実行される訳ではありませんので注意してください。

サンプルコード1

process-next-tick.js

process.nextTick(function () {
    console.log('next tick.');
});

console.log('first tick.');

実行結果

C:\work\node>node process-next-tick.js
first tick.
next tick.

サンプルコード2

process-next-tick-set-immediate-1.js

var i = 0;
var func = function () {
    console.log('next tick - process.nextTick - ' + i + '.');
    i++;
    if (i < 10) {
        process.nextTick(func);
    }
};
process.nextTick(func);

setImmediate(function () {
    console.log('next tick - immediate.');
});

console.log('first tick.');

実行結果

C:\work\node>node process-next-tick-set-immediate-1.js
first tick.
next tick - process.nextTick - 0.
next tick - process.nextTick - 1.
next tick - process.nextTick - 2.
next tick - process.nextTick - 3.
next tick - process.nextTick - 4.
next tick - process.nextTick - 5.
next tick - process.nextTick - 6.
next tick - process.nextTick - 7.
next tick - process.nextTick - 8.
next tick - process.nextTick - 9.
next tick - immediate.

関連

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

-Node.js