Node.js EventEmitter 事件佇列
Node.js 所有的非同步 I/O 操作在完成時都會傳送一個事件到事件佇列。
下面我們來詳解事件佇列的方法與實例
方法:
[code]1.addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。 2.on(event, listener) 为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。 3.once(event, listener) 为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。 4.removeListener(event, listener) 移除指定事件的某个监听器,监听器 必须是该事件已经注册过的监听器。 5.removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器 6.setMaxListeners(n) 默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。 7.listeners(event) 返回指定事件的监听器数组。 8.emit(event, [arg1], [arg2], [...]) 按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
類方法
[code]1.listenerCount(emitter, event) 返回指定事件的监听器数量。
事件
[code]1.newListener event - 字符串,事件名称 listener - 处理事件函数 该事件在添加新监听器时被触发 2.removeListener event - 字符串,事件名称 listener - 处理事件函数 从指定监听器数组中删除一个监听器。需要注意的是,此操作将会改变处于被删监听器之后的那些监听器的索引。
[code]// 引入 events 模块 var events = require('events'); // 创建 EventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 注册监听器 eventEmitter.on('some_event', function () { console.log('some_event 事件触发'); }); // 计时器 setInterval(function () { // 触发 some_event 监听器 eventEmitter.emit('some_event'); }, 1000);
[code]var events = require('events'); var eventEmitter = new events.EventEmitter(); eventEmitter.on('listener', function (arg1, arg2) { console.log('listener1', arg1, arg2); }) eventEmitter.on('listener', function (arg1, arg2) { console.log('listener2', arg1, arg2); }); eventEmitter.emit('listener', 'zhang', 'li');