情報アイランド

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

Node.jsでイベントに1回限りのイベントハンドラを登録する

イベントに1回限りのイベントハンドラ(一度呼び出されると自動的にイベントから登録解除されるイベントハンドラ)を登録するにはeventEmitter.once関数を使用します。

var events = require('events');

var eventEmitter = new events.EventEmitter();
eventEmitter.once('xxx', function (arg1, arg2) {
});

第1引数にイベント名を指定します。

第2引数にイベントハンドラを関数として指定します。この関数の引数はイベントの引数です。

同じイベントハンドラを複数回登録することもできます。その場合、イベントが発生した場合には同じイベントハンドラが複数回呼び出されることになります。

サンプルコード1

event-emitter-once.js

var events = require('events');

var eh1 = function (p) {
    console.log(p.name + ' ' + p.age);
};

var eventEmitter = new events.EventEmitter();
eventEmitter.emit('new', { name: 'nakata', age: 25 });
eventEmitter.once('new', eh1);
eventEmitter.emit('new', { name: 'yamaguti', age: 15 });
eventEmitter.once('new', eh1);
eventEmitter.once('new', eh1);
eventEmitter.emit('new', { name: 'sasaki', age: 17 });
eventEmitter.emit('new', { name: 'nakamura', age: 37 });

実行結果

C:\work\node>node event-emitter-once.js
yamaguti 15
sasaki 17
sasaki 17

関連

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

-Node.js