EventEmitter 类
const EventEmitter = require('events');
'newListener' 事件
当新增监听器时,在新的监听器被添加到其内部监听器数组之前触发
'removeListener' 事件
当移除已存在的监听器时触发
事件上监听器的数量
最大限制数量
当前的监听器最大限制数的默认值:EventEmitter.defaultMaxListeners() 获取EventEmitter当前的监听器最大限制数的值:emitter.getMaxListeners() 设置EventEmitter当前的监听器最大限制数的值:emitter.setMaxListeners(n)
当前数量
返回正在监听的名为 eventName 的事件的监听器的数量: emitter.listenerCount(eventName) 废弃:EventEmitter.listenerCount(emitter, eventName)
在事件上添加/删除监听器
添加
监听器会在每次触发命名事件时被调用 添加 listener 函数到名为 eventName 的事件的监听器数组的末尾 emitter.on(eventName, listener) 别名:emitter.addListener(eventName, listener) 添加 listener 函数到名为 eventName 的事件的监听器数组的开头 emitter.prependListener(eventName, listener) 监听器只在第一次触发命名事件时被调用一次 添加单次监听器 listener 到名为 eventName 的事件的监听器数组的末尾 emitter.once(eventName, listener) 添加单次监听器 listener 到名为 eventName 的事件的监听器数组的开头 emitter.prependOnceListener(eventName, listener)
删除
从名为 eventName 的事件的监听器数组中移除指定的 listener emitter.removeListener(eventName, listener) 别名:emitter.off(eventName, listener) 移除全部监听器或指定的 eventName 事件的监听器 emitter.removeAllListeners([eventName])
触发事件
emitter.emit(eventName[, ...args])
1. 按照监听器注册的顺序,同步地(顺序的依次)调用每个注册到名为 eventName 的事件的监听器,并传入提供的参数。可以使用 setImmediate() 或 process.nextTick() 切换到异步模式。
2. 在事件触发之后、且最后一个监听器执行完成之前, removeListener() 或 removeAllListeners() 不会从 emit() 中移除绑定的监听器
3. 如果事件有监听器,则返回 true,否则返回 false
获取已注册监听器的事件名数组
emitter.eventNames()
数组中的值为字符串或 Symbol
获取事件监听器数组
获取事件监听器数组的副本
emitter.listeners(eventName)
获取事件监听器数组的拷贝,包括封装的监听器(例如由 .once() 创建的)
emitter.rawListeners(eventName)