概念
触发器Emitter
会触发命名事件eventName
来调用函数Listener
//引入事件模块events
var events = require('events')
//创建触发器对象emitter
var emitter = new events.EventEmitter()
/**为connection事件注册一个监听器,一个事件可绑定多个监听器
* 添加监听器 emitter.on是emitter.addListener的简写
* 添加只能调用一次的监听器 emitter.once(eventName, listener)
*/
emitter.on('connection', function () {
console.log('已连接')
})
/**2s后触发connection事件
* 调用监听器 emmiter.emit(eventName,[args])
*/
setTimeout(function () {
emitter.emit('connection')
}, 2000)
监听器
移除监听器
1、移除指定事件的指定监听器:emitter.removeListener(eName, listener)
、emitter.off(eName,listener)
2、移除指定事件的全部监听器:emitter.removeAllListener(eName)
3、移除所有事件的全部监听器:emitter.removeAllListener()
监听器绑定个数
设置监听器最大绑定值:emitter.setMaxListeners(n)
,当n = 0
或Infinity
表示不限定绑定数量
查看指定事件绑定监听器的个数:emitter.listenerCount(eventName)
error事件
如果没有为error
事件注册监听器,
则当error
事件触发时,会抛出错误、打印堆栈跟踪、并退出Node.js
进程
因此要为会触发error
事件的对象设置监听器,避免遇到错误后整个程序崩溃