Node默认一个事件的监听数量为10个,超过十个将会发出警告
const EventEmitter = require('events')class MyEmitter extends EventEmitter { }
const myEmitter = new MyEmitter();
console.log(EventEmitter.defaultMaxListeners); //10
for (let i = 0; i < 11; i++) {
myEmitter.on("event", () => {
console.log(i);
});
}
myEmitter.emit("event")
//MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 event listeners added. Use emitter.setMaxListeners() to increase limit
改变指定的 EventEmitter 实例的监听器限制
const EventEmitter = require('events')class MyEmitter extends EventEmitter { }
const myEmitter = new MyEmitter();
myEmitter.setMaxListeners(13);
for (let i = 0; i < 11; i++) {
myEmitter.on("event", () => {
console.log(i);
});
}
myEmitter.emit("event")
3.8 newListener事件
EventEmitter 实例会在一个监听器被添加到其内部监听器数组【之前】触发自身的 ‘newListener’ 事件
const EventEmitter = require('events')class MyEmitter extends EventEmitter { }
const myEmitter = new MyEmitter()
myEmitter.once("newListener", (event, listener) => {
if(event === "event"){
myEmitter.on("event",()=>{
console.log("B");
})
}
});
myEmitter.on("event",()=>{
console.log("A");
});
myEmitter.emit("event")
/*
B
A
*/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对软件开发网的支持。









