上面的代码,当someMethond方法被MyClass的实例调用时,就会发射一个叫“cuteom event”的事件,这个事件还会发射两个字符串作为数据:“argument 1”和“argument 2”,它们将会作为参数传递给事件监听器。
MyClass实例的客户端可以像这样监听“custom event”事件:
复制代码 代码如下:
var myInstance = new MyClass();
myInstance.on('custom event', function(str1, str2) {
console.log('got a custom event with the str1 %s and str2 %s!', str1, str2);
});
再比如,你可以这样创建一个每秒发射一次“tick”事件的Ticker类:
复制代码 代码如下:
var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {
var self = this;
setInterval(function() {
self.emit('tick');
}, 1000);
};
util.inherits(Ticker, EventEmitter);
用Ticker类的客户端可以展示如何使用Ticker类和监听“tick”事件,
复制代码 代码如下:
var ticker = new Ticker();
ticker.on("tick", function() {
console.log("tick");
});
小结
事件发射器模式是种可重入模式(recurrent pattern),可以用它将事件发射器对象从一组特定事件的代码中解耦合。
可以用event_emitter.on()来为特定类型的事件注册监听器,并用event_emitter.removeListener()来取消注册。
还可以通过继承EventEmitter和简单的使用.emit()函数来创建自己的事件发射器。
您可能感兴趣的文章: