Node.js で イベント処理の実装を行う場合、 EventEmitter
を利用します。
今回はその EventEmitter
の使い方として実装方法と利用方法をまとめました。
Node.js におけるイベント処理
一般的に MVCパターン や イベント駆動 プログラム を実装する場合、 observerパターンを利用します。
observerパターン
Node.js ではよく非同期処理を実装しますが、非同期処理でよくイベント駆動パターンが実装されます。
イベント処理はいわゆる先述した observer パターン で実装されますが、Node.js における具体的な実装は EventEmitter
になります。
EventEmitterを使った実装例
イベント処理したいクラスは EventEmitter
を継承することで基本的なイベント処理が可能になります。
イベントを発行する場合は EventEmitter.emit()
を利用して呼び出し、イベントにアタッチするときは EventEmitter.on()
でアタッチします。
以下では具体的なサンプルコードを掲載して実装方法と利用方法を見ていきます。
EventEmitter を継承した モジュール の作成
sample.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var EventEmitter = require( "events" ).EventEmitter; var util = require( "util" ); var SampleClass = function () { }; util.inherits(SampleClass, EventEmitter); SampleClass.prototype.say = function (message) { process.nextTick(()=>{ this .emit( "executed" , null , message); }) }; module.exports = SampleClass; |
L.6
EventEmitter
の継承には util.inherits()
を利用します。
独自クラスを宣言した後、 util.inherits(子クラス, 親クラス)
で指定します。
L.10
EventEmitter
を継承すると .emit()
メソッドが利用できるようになります。
.emit()
メソッドを呼び出すと指定したイベント名のイベントが発行されます。
EventEmitter を継承した モジュール の利用
index.js
1 2 3 4 5 6 7 8 | var SampleClass = require( "./sample" ); var obj = new SampleClass(); obj.on( "executed" , (error, message) => { console.log(message); }); obj.say( "Hello World !" ); |
L.3
EventEmitter
を継承したクラスはインスタンス生成して利用します。
L.4
生成したインスタンスメソッドに EventEmitter
から継承される .on()
メソッドがあるので、これを利用することでイベントへコールバックをアタッチできます。
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!