Node.js v0.10.31API手冊-文件夹
Events(事件)
Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。
全部这些产生事件的对象都是events.EventEmitter的实例。 你能够通过require("events")来訪问该模块。
通常,事件名是驼峰命名 (camel-cased) 的字符串。只是也没有强制的要求,不论什么字符串都是能够使用的。
为了处理发出的事件。我们将函数
(Function) 关联到对象上。 我们把这些函数称为 监听器 (listeners)。 在监听函数中 this
指向当前监听函数所关联的EventEmitter
对象。
类: events.EventEmitter
通过require('events').EventEmitter 获取 EventEmitter 类。当 EventEmitter
实例遇到错误,通常的处理方法是产生一个'error' 事件,node
对错误事件做特殊处理。 假设程序没有监听错误事件,程序会依照默认行为在打印出 栈追踪信息 (stack trace) 后退出。
全部EventEmitter
会在加入 listener 时触发'newListener'事件。删除
listener 时触发 'removeListener'
事件。
emitter.addListener(event, listener)
emitter.on(event, listener)
加入一个 listener 至特定事件的 listener 数组尾部。
server.on('connection', function (stream) {
console.log('someone connected!');
});
返回 emitter,方便链式调用。
emitter.once(event, listener)
加入一个 一次性 listener。这个 listener 仅仅会在下一次事件发生时被触发一次,触发完毕后就被删除。
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});
返回 emitter,方便链式调用。
emitter.removeListener(event, listener)
以指定事件从 listener 数组中删除一个 listener 。注意:此操作会改变 listener 数组中在当前 listener 后的listener 的位置下标。
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
返回 emitter,方便链式调用。
emitter.removeAllListeners([event])
删除全部 listener,或者删除某些事件 (event) 的 listener。返回 emitter,方便链式调用。
emitter.setMaxListeners(n)
在默认情况下。EventEmitter 会在多于 10 个 listener 监听某个事件的时候出现警告,此限制在寻找内存泄露时很实用。显然,也不是全部的 Emitter 事件都要被限制在 10 个 listener 下面,在这样的情况下能够使用这个函数来改变这个限制。设置0为没有限制。
emitter.listeners(event)
返回指定事件的 listener 数组。
erver.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]
emitter.emit(event, [arg1], [arg2], [...])
使用提供的參数按顺序运行指定事件的 listener。若事件有
listeners 则返回 true
否则返回 false
。
类方法: EventEmitter.listenerCount(emitter, event)
返回指定事件的 listeners 个数。
事件: 'newListener'
-
event
String 事件名 -
listener
Function事件处理函数
listener
是否在 emitter.listeners(event)返回的列表中。
事件: 'removeListener'
-
event
String 事件名 -
listener
Function 事件处理函数
listener
是否在emitter.listeners(event)返回的列表中。