NodeEventTarget 与 EventEmitter


NodeEventTarget vs. EventEmitter

NodeEventTarget 对象实现了经过修改的 EventEmitter API 子集,使其在某些情况下可以接近地 模拟 一个 EventEmitterNodeEventTarget 不是 EventEmitter 的实例,并且在大多数情况下不能替代 EventEmitter 使用。

【The NodeEventTarget object implements a modified subset of the EventEmitter API that allows it to closely emulate an EventEmitter in certain situations. A NodeEventTarget is not an instance of EventEmitter and cannot be used in place of an EventEmitter in most cases.】

  1. EventEmitter 不同,每个事件 type 的任何给定 listener 最多只能注册一次。多次尝试注册同一个 listener 将被忽略。
  2. NodeEventTarget 并不模拟完整的 EventEmitter API。具体来说,prependListener()prependOnceListener()rawListeners()errorMonitor API 未被模拟。'newListener''removeListener' 事件也不会被触发。
  3. NodeEventTarget 对类型为 'error' 的事件不会实现任何特殊的默认行为。
  4. NodeEventTarget 支持将 EventListener 对象以及函数用作所有事件类型的处理程序。