function(){
console.log(2);
});
emitter.emit('test');//2 1
emitter.emit('test');//1
【emitter.removeAllListeners([eventName])】
移除全部或指定 eventName 的监听器,返回一个 EventEmitter 引用,可以链式调用
[注意]在代码中移除其他地方添加的监听器是一个不好的做法,尤其是当 EventEmitter 实例是其他组件或模块(如 socket 或文件流)创建的
var EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.on('test',function(){
console.log(1);
}).removeAllListeners('test');
emitter.emit('test');//''
【emitter.removeListener(eventName, listener)】
eventName <any>
listener <Function>
从名为 eventName 的事件的监听器数组中移除指定的 listener
var EventEmitter = require('events');
var emitter = new EventEmitter();
function show(){
console.log(1);
}
emitter.on('test',show).removeListener('test',show);
emitter.emit('test');//''
[注意]removeListener最多只会从监听器数组里移除一个监听器实例。如果任何单一的监听器被多次添加到指定eventName的监听器数组中,则必须多次调用removeListener才能移除每个实例
var EventEmitter = require('events');
var emitter = new EventEmitter();
function show(){
console.log(1);
}
emitter.on('test',show).on('test',show).removeListener('test',show);
emitter.emit('test');//'1'
[注意]一旦一个事件被触发,所有绑定到它的监听器都会按顺序依次触发。这意味着,在事件触发后、最后一个监听器完成执行前,任何 removeListener() 或 removeAllListeners() 调用都不会从 emit() 中移除它们。 随后的事件会像预期的那样发生
因为监听器是使用内部数组进行管理的,所以调用它会改变在监听器被移除后注册的任何监听器的位置索引。 虽然这不会影响监听器的调用顺序,但意味着由 emitter.listeners() 方法返回的监听器数组副本需要被重新创建
var EventEmitter = require('events');
var emitter = new EventEmitter();
function show1(){
console.log(1);
emitter.removeListener('test',show2);
}
function show2(){
console.log(2);
}
emitter.on('test',show1).on('test',show2);
emitter.emit('test');//1 2
emitter.emit('test');//1
设置
【emitter.eventNames()】
返回一个列出触发器已注册监听器的事件的数组。 数组中的值为字符串或符号
var EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.addListener('test1',function(){console.log(1);});
emitter.addListener('test2',function(){console.log(2);});
console.log(emitter.eventNames());//[ 'test1', 'test2' ]
【emitter.listenerCount(eventName)】
eventName <any> 正在被监听的事件名
返回正在监听名为 eventName 的事件的监听器的数量
var EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.addListener('test',function(){console.log(1);});
emitter.addListener('test',function(){console.log(1);});
console.log(emitter.listenerCount('test'));//2
【emitter.listeners(eventName)】
返回名为 eventName 的事件的监听器数组的副本
var EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.addListener('test',function(){console.log(1);});
emitter.addListener('test',function(){console.log(2);});
console.log(emitter.listeners('test'));//[ [Function], [Function] ]
emitter.listeners('test')[0]();//1
【emitter.getMaxListeners()】
返回 EventEmitter 当前的最大监听器限制值
var EventEmitter = require('events');
var emitter = new EventEmitter();
console.log(emitter.getMaxListeners());//10
【emitter.setMaxListeners(n)】
默认情况下,如果为特定事件添加了超过 10 个监听器,则 EventEmitter 会打印一个警告。 此限制有助于寻找内存泄露。 但是,并不是所有的事件都要被限为 10 个。 emitter.setMaxListeners() 方法允许修改指定的 EventEmitter 实例的限制。 值设为 Infinity(或 0)表明不限制监听器的数量。返回一个 EventEmitter 引用,可以链式调用
var EventEmitter = require('eve