EventEmitter 的用法

514 阅读1分钟

EventEmitter 是 Node.js 中一个非常重要的模块,它实现了事件驱动、发布/订阅模式,EventEmitter 充当了一个事件中心的角色,它可以注册事件监听器,监听特定的事件,当该事件被触发时,它会调用相应的回调函数来处理事件。同时,它也可以触发事件,通知所有注册了该事件的监听器。

EventEmitter 的三个API

EventEmitter主要有三个API:addEventListenerdispatchEventremoveEventListener。其中,addEventListener用于注册一个事件监听器,dispatchEvent用于触发监听的事件,removeEventListener用于移出一个事件监听器。

如何使用EventEmitter

  1. 创建一个EventEmitter实例:
const obj = new EventEmitter();
  1. 注册事件监听器:
obj.addEventListener('eventName',fn);  //fn为触发事件会调用的函数
  1. 触发事件:
obj.dispatchEvent('eventName')
  1. 移除事件监听器:
obj.removeEventListener('eventName',fn) //fn为要移除的触发事件时调用的函数

这三个API更多的用法详见链接

EventEmitter的缺点

  1. 事件少时还行;但当事件过多时,很难管理;
  2. 事件名用字符串表示,字符串容易拼错。
  3. 内存泄漏问题:如果注册的事件监听器没有被正确地移除,它们会一直占用内存,导致内存泄漏问题,特别是在长时间运行的应用中,这个问题可能会变得更加显著。

总结

总的来说,EventEmitter 是一个非常有用的工具,可以帮助我们实现事件驱动、发布/订阅模式,使得代码更加优雅和易于扩展。