您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Node.js 分发事件

Node里很多对象会分发事件: 每次有连接的时候net.Server会分发事件,当打开的时候fs.readStream会分发事件。所有能分发事件的对象都是 events.EventEmitter的实例。通过require("events");能访问这个模块。

一般来说,事件名都遵照驼峰规则,但这不是强制规定,任何形式的字符串都可以做为事件名。

为了处理事件,通常将关联到对象上。这些也叫监听者(listeners)。个里,this指向监听者所关联的EventEmitter。

类: events.EventEmitter

你可以通过require('events').EventEmitterEventEmitter类。

EventEmitter实例遇到后,通常会触发事件。事件在node里是特殊例子。如果没有监听者,认的操作是打印堆栈信息并程序。

当新的监听者时, EventEmitters会触发'newListener'事件,当移除时会触发'removeListener'。

监听者到特定event的监听数组的尾部,触发器不会检查是否已经过这个监听者。 多次相同的event和listener将会导致listener多次。

server.on('connection', function (stream) {
  console.log('someone connected!');
});

返回emitter。

给事件一次性的listener,这个listener只会被触发一次,之后就会被移除。

server.once('connection', function (stream) {
  console.log('Ah, we have our first user!');
});

返回emitter。

从某个事件的listener数组中移除listener。注意,这个操作会改变listener数组的次序。

var callback = function(stream) {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener最多会移除数组里的listener。如果多次同listener到数组,那就需要多次removeListener来移除每实例。

返回emitter。

移除所有的listener,或者某个事件listener。最好不要移除全部listener,尤其是那些不是你传入的(比如socket或流)。

返回emitter。

认情况下,给单个事件超过10个listener,事件分发器会打印警告。这样有利于检查内存泄露。不过不是所有的分发器都应该限制在10个,这个允许改变 listener,无论是0还是更多。

返回emitter。

emitter.setMaxListeners(n)设置分发器的最大listener数,而这个会立即设置所有EventEmitter的当前值和认值。要小心使用。

请注意,emitter.setMaxListeners(n)的优先级高于EventEmitter.defaultMaxListeners.

用于返回事件的listener数组。

server.on('connection', function (stream) {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]

允许你使用指定的参数顺序的执行每listener.

如果事件有 listener,返回true, 否则false

返回指定事件的listener。

event{String}事件名

listener{Function}事件处理

listener的时候会触发这个事件。当这个事件触发的时候,listener可能还没到listener数组。

event{String}事件名

listener{Function}事件处理

listener的时候会触发这个事件。当这个事件触发的时候,listener可能还还没从listener数组移除。


联系我
置顶