Node.jsのEvent emitter
ブラウザでJavaScriptを使ったことがあるなら、ユーザーのインタラクションの多くがイベントを通じて処理されることをご存知でしょう。例えば、マウスクリック、キーボードのボタン押下、マウスの動きへの反応などです。
バックエンド側では、Node.jsはeventsモジュールを使って同様のシステムを構築する選択肢を提供しています。
このモジュールは特に、イベントを処理するために使用するEventEmitterクラスを提供しています。
これは以下のように初期化します。
const = ('node:events');
const = new ();
このオブジェクトは、数あるメソッドの中でも特にonとemitメソッドを公開しています。
emitはイベントをトリガーするために使われます。onは、イベントがトリガーされたときに実行されるコールバック関数を追加するために使われます。
例えば、startイベントを作成し、サンプルとしてコンソールにログを出力することでそれに反応してみましょう。
eventEmitter.on('start', () => {
.('started');
});
これを実行すると
eventEmitter.emit('start');
イベントハンドラ関数がトリガーされ、コンソールログが表示されます。
emit()に追加の引数を渡すことで、イベントハンドラに引数を渡すことができます。
eventEmitter.on('start', => {
.(`started ${}`);
});
eventEmitter.emit('start', 23);
複数の引数
eventEmitter.on('start', (, ) => {
.(`started from ${} to ${}`);
});
eventEmitter.emit('start', 1, 100);
EventEmitterオブジェクトは、イベントとやりとりするための他のいくつかのメソッドも公開しています。例えば、
once(): 一度だけ実行されるリスナーを追加します。removeListener()/off(): イベントからイベントリスナーを削除します。removeAllListeners(): イベントのすべてのリスナーを削除します。
これらのメソッドについての詳細は、公式ドキュメントで読むことができます。