events模块是Node.js最核心的模块之一,很多模块都继承了它。node.js采用事件驱动架构,几乎所有的异步I/O操作完成时都会触发事件。
一 EventEmitter
EventEmitter是events模块的核心类
emitter.on(event, listener) //监听事件,可以多次绑定 emitter.once(event, listener) //只监听一次 emitter.off(event, listener) //移除监听器 emitter.emit(event, ...args) //触发事件 emitter.addlistener() //同on emitter.removeListener //同off emitter.removeAllListeners() //移除所有监听器 emitter.listenerCount(event) //获取某事件的监听器的数量 emitter.eventNames() //获取所有已注册的事件名二 事件循环的顺序
1 同步代码执行
2 Promise.then()
3 定时器(setTimeouot)
4 I/O事件
5 setImemediate
三 实际应用
HTTP 服务器: 'server.on('request', callback)'
流:'stream.on('data', callback)、stream.on('end', callback)'
文件监听:'watcher.on('change', callback)'
进程: 'process.on('exit', callback)'
四 自定义事件
class Order extends EventEmitter{ place(orderInfo){ this.emit('placed', orderInfo) } }