Node.js所有的异步I/O操作在完成时都会发送一个事件给事件队列
- 大多数Node.js核心API构建惯用异步事件驱动架构,某些类型的对象(触发器Emitter)会触发命名事件来调用函数(监听器Listener)
net.Server
对象会在每次有新连接时触发事件、fs.readStream
对象会在打开文件时触发事件- 所有这些产生事件的对象都是
events.EventEmitter
实例。这些对象有一个EventEmitter .on()
函数,用于将一个或多个函数绑定到命名事件上 - 当
EventEmitter
对象触发一个事件时,所有绑定在该事件上的函数都会同步被调用
1.实例:
// eventEmitter.on() 用于注册监听器, eventEmitter.emit() 用于触发事件。
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
eventEmitter .on('some_event', function() {
console.log('some_event 事件触发');
});
2.方法
on(event, listener)
为指定事件event注册一个监听器listeneronce(event, listener)
监听器最多触发一次addListener(event, listener)
为指定事件添加一个监听器到监听器数组的尾部removeListener(event, listener)
移除事件已经注册的某个监听器emit(event, [arg1], [arg2], [...])
按监听器的顺序执行执行每个监听器,如果事件有注册监听返回 true,否则返回 false。listenerCount(emitter, event)
返回指定事件的监听器数量