myEmitter.on('嗨', callback);
}
myEmitter.emit('嗨', '你好');
输入结果如图:

实现思路:
我们先将特定事件的监听器最大设置为常量10
constructor(){
#事件监听函数保存的地方
this.events={};
#最大监听器数量
this._maxListeners = 10;
}然后在我们的 on 函数中,对这个监听器的数量进行判断,从而作出提示
on(eventName,listener){
if (this.events[eventName]) {
this.events[eventName].push(listener);
#如果超过最大限度,以及不为0,则作出内存泄漏提示
if (this._maxListeners != 0 && this.events[type].length >= this._maxListeners) {
console.error('超过最大的监听数量可能会导致内存泄漏');
}
} else {
#如果没有保存过,将回调函数保存为数组
this.events[eventName] = [listener];
}
}我们也支持对 _maxListeners 变量根据用户的输入进行更改,即我们的 setMaxListeners() 函数
setMaxListeners(MaxListeners) {
this._maxListeners = MaxListeners
}
三、总结
本文从 node 的 Events 模块出发,然后去介绍了 Events 模块常用 API 的使用,从中通过一步一步简易去思考这些 API 使用的内部原理,简易的实现了这些 API,希望大家看完文章之后,能对 Events 模块有进一步的理解。









