EventEmitter
EventEmitter 是内置模块 "events" 里唯一的类, 实现事件的触发和监听回调.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 绑定事件及事件的处理程序 eventEmitter.on('eventName', function (arg1) { console.log('事件被触发',arg1); }) .on('eventName', function (arg1) { console.log('事件被触发2',arg1); }); setTimeout(function() { // 触发名称为 eventName 的事件, 如果有参数, 第二个之后是参数的位置 eventEmitter.emit('eventName',"参数一"); }, 1000); // eventEmitter 中 eventName 的监听数量 console.log(events.listenerCount(eventEmitter,'eventName'));//2 |
events 类方法
- listenerCount(emitter, event) 指定事件在某个监听器内的监听数量
EventEmitter 成员方法
- addListener(event, listener) 添加方法, 同 on() 方法
- on(event, listener) 监听器数组的末尾添加一个新的监听器,同 event 不覆盖
- once(event, listener) 添加一次性事件监听, 触发一次后会被移除
- removeListener(event, listener) 移除一个指定监听器,多次添加多次移除
- removeAllListeners([event]) 移除所有监听器
- getMaxListeners() 最大监听器数量
- setMaxListeners(n) 设置最大的监听器数量
- defaultMaxListeners 默认最大监听器数量, 10
- listeners(event) 返回指定事件的监听器数组
- emit(event[, arg1][, arg2][, …]) 执行监听器, 该事件有监听器返回true
特殊事件
- newListener 参数 event, listener. 在添加新监听器时触发
- removeListener 参数 event, listener. 在移除新监听器时触发
- error 出现错误时触发
自定义 EventEmitter 子类
新建子类 (MyEvent.js)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var util = require('util'); var eventEmitter = require('events').EventEmitter; var MyEvent = function(){ var self = this; this.on('newListener', function(eventname) { console.log('Event Name: ' + eventname); }); } util.inherits(MyEvent, eventEmitter); module.exports = MyEvent; |
使用
1 2 3 4 5 6 7 |
var Event = require('./MyEvent.js'); event = new Event(); event.on("newEvent",function(){}); // 输出 Event Name: newEvent |
0 Comments