EventEmitter 是 Node.js 中一个非常重要的模块,它实现了事件驱动、发布/订阅模式,EventEmitter 充当了一个事件中心的角色,它可以注册事件监听器,监听特定的事件,当该事件被触发时,它会调用相应的回调函数来处理事件。同时,它也可以触发事件,通知所有注册了该事件的监听器。
EventEmitter 的三个API
EventEmitter主要有三个API:addEventListener 、dispatchEvent和removeEventListener。其中,addEventListener用于注册一个事件监听器,dispatchEvent用于触发监听的事件,removeEventListener用于移出一个事件监听器。
如何使用EventEmitter
- 创建一个
EventEmitter实例:
const obj = new EventEmitter();
- 注册事件监听器:
obj.addEventListener('eventName',fn); //fn为触发事件会调用的函数
- 触发事件:
obj.dispatchEvent('eventName')
- 移除事件监听器:
obj.removeEventListener('eventName',fn) //fn为要移除的触发事件时调用的函数
这三个API更多的用法详见链接
EventEmitter的缺点
- 事件少时还行;但当事件过多时,很难管理;
- 事件名用字符串表示,字符串容易拼错。
- 内存泄漏问题:如果注册的事件监听器没有被正确地移除,它们会一直占用内存,导致内存泄漏问题,特别是在长时间运行的应用中,这个问题可能会变得更加显著。
总结
总的来说,EventEmitter 是一个非常有用的工具,可以帮助我们实现事件驱动、发布/订阅模式,使得代码更加优雅和易于扩展。