なんだかGoodVibes

日々の勉強メモです。

【Node】EventEmitterの基本

こんにちは。
本日はEventEmitterの基本についてメモです。


概要

EventEmitterクラスは特定のイベントが発生した際に
呼び出す関数をリスナーとして登録することを可能にします。
使用するにはeventsモジュールの読み込みが必要です。


サンプルソース

今回使用するメソッドは以下です。

  • on: 指定したイベントに対してリスナー関数を登録する
  • once: 指定したイベントに対してリスナー関数を登録し、初回のイベントが通知されると登録が解除される
  • emit: 指定されたイベントを発行する
  • removeAllListeners: 指定されたイベントに登録されているすべてのリスナーを解除する
const EventEmitter = require('events').EventEmitter;
const emitter = new EventEmitter();

emitter.on('myEvent', t => {console.log('[myEvent][on] ' + t);});
emitter.once('myEvent', t => {console.log('[myEvent][once] ' + t);});

console.log('登録済みのリスナー数[myEvent] ' + EventEmitter.listenerCount(emitter, 'myEvent'));
emitter.emit('myEvent', '1回目');

console.log('登録済みのリスナー数[myEvent] ' + EventEmitter.listenerCount(emitter, 'myEvent'));
emitter.emit('myEvent', '2回目');

emitter.removeAllListeners('myEvent');
console.log('登録済みのリスナー数[myEvent] ' + EventEmitter.listenerCount(emitter, 'myEvent'));


出力は以下です。

登録済みのリスナー数[myEvent] 2
[myEvent][on] 1回目
[myEvent][once] 1回目
登録済みのリスナー数[myEvent] 1
[myEvent][on] 2回目
登録済みのリスナー数[myEvent] 0


まとめ

イベントを使用する場面って結構あるかと思います。
EventEmitterクラスに知っているのと知らないのとでは
ソースの書き方の幅も変わってくるので知っていたほうがいいかと思います。
以上です。