Node里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是events.EventEmitter的实例。 你可以通过require("events")来访问该模块。
通常,事件名是驼峰命名 (camel-cased) 的字符串。不过也没有强制的要求,任何字符串都是可以使用的。
为了处理发出的事件,我们将函数
(Function) 关联到对象上。 我们把这些函数称为 监听器 (listeners)。 在监听函数中 this
指向当前监听函数所关联的EventEmitter
对象。
当 EventEmitter
实例遇到错误,通常的处理方法是产生一个‘error‘ 事件,node
对错误事件做特殊处理。 如果程序没有监听错误事件,程序会按照默认行为在打印出 栈追踪信息 (stack trace) 后退出。
所有EventEmitter
会在添加 listener 时触发‘newListener‘事件,删除
listener 时触发 ‘removeListener‘
事件。
server.on(‘connection‘, function (stream) {
console.log(‘someone connected!‘);
});
返回 emitter,方便链式调用。
server.once(‘connection‘, function (stream) {
console.log(‘Ah, we have our first user!‘);
});
返回 emitter,方便链式调用。
var callback = function(stream) {
console.log(‘someone connected!‘);
};
server.on(‘connection‘, callback);
// ...
server.removeListener(‘connection‘, callback);
返回 emitter,方便链式调用。
返回
emitter,方便链式调用。
erver.on(‘connection‘, function (stream) {
console.log(‘someone connected!‘);
});
console.log(util.inspect(server.listeners(‘connection‘))); // [ [Function] ]
若事件有
listeners 则返回 true
否则返回 false
。
event
String 事件名listener
Function事件处理函数listener
是否在 emitter.listeners(event)返回的列表中。
event
String 事件名listener
Function 事件处理函数listener
是否在emitter.listeners(event)返回的列表中。
原文:http://blog.csdn.net/livialiu1234/article/details/40406959