Events 事件
同步和异步
仅处理事件一次
错误事件
EventEmitter
监听事件
newListener:EventEmitter 实例在新的监听器被添加到其内部监听器数组之前,会触发自身的 newListener 事件。removeListener:listener 被移除后触发。
静态方法/属性
实例方法/属性
emitter.addListener(eventName, listener):emiiter.on 的别名emiiter.emit(eventName [, ...args]):按照监听器注册的顺序,同步地调用每个注册到名为 eventName 的事件的监听器,并传入提供的参数。emiiter.eventNames():返回已注册监听器的事件名数组。数组中的值为字符串或 Symbol。emitter.getMaxListeners():返回 EventEmitter 当前的监听器最大限制数的值,可使用 emitter.setMaxListeners(n) 设置或默认为 EventEmitter.defaultMaxListeners。emitter.listenerCount(eventName):返回正在监听的名为 eventName 的事件的监听器的数量。emitter.listeners(eventName):返回名为 eventName 的事件的监听器数组的副本。emitter.off(eventName, listener):emitter.removeListener() 的别名emitter.on(eventName, listener):添加 listener 函数到名为 eventName 事件的监听器数组的末尾。不会检查 listener 是否已被添加。多次调用并传入相同的 eventName 与 listener 会导致 listener 会被添加多次。emitter.once(eventName, listener):添加单次监听器 listener 到名为 eventName 的事件。当 eventName 事件下次触发时,监听器会先被移除,然后再调用。emitter.prependListener(eventName, listener):添加 listener 函数到名为 eventName 的事件的监听器数组的开头。不会检查 listener 是否已被添加。多次调用并传入相同的 eventName 和 listener 会导致 listener 被添加多次。emitter.prependOnceListener(eventName, listener):添加单次监听器 listener 到名为 eventName 的事件的监听器数组的开头。 当 eventName 事件下次触发时,监听器会先被移除,然后再调用。emitter.removeAllListeners([eventName]):移除全部监听器或指定的 eventName 事件的监听器。删除代码中其它位置添加的监听器是不好的做法,尤其是当 EventEmitter 实例是由某些其它组件或模块(例如套接字或文件流)创建时。emitter.removeListener(eventName, listener):从名为 eventName 的事件的监听器数组中移除指定的 listener。emitter.setMaxListeners(n):默认情况下,如果为特定事件添加了超过 10 个监听器,则 EventEmitter 会打印一个警告,这有助于发现内存泄露。但是,并不是所有的事件都要限制 10 个监听器。emitter.setMaxListeners() 方法可以为指定的 EventEmitter 实例修改限制。值设为 Infinity(或 0)表示不限制监听器的数量。emitter.rawListeners(eventName):返回 eventName 事件的监听器的拷贝,包括封装的监听器(例如由 .once() 创建的)。events.once(emitter.name):创建一个 Promise,当 EventEmitter 触发给定的事件时则会被解决,当 EventEmitter 触发 'error' 时则会被拒绝。解决 Promise 时将会带上触发到给定事件的虽有参数的数组。