创建文件app.js,依次写入下列代码
事件模块引入与实例化监听器
//引入事件模块
var events = require('events');
//实例化事件监听
var eventEmitter = new events.EventEmitter();
方法
一、on(event, callback) 注册监听事件
eventEmitter.on('test',(name)=>{
console.log('test2 触发'+name);
});
二、addListener(event, callback) 添加一个监听器到监听器数组的尾部
eventEmitter.addListener('test', ()=>
{
console.log('test1 触发');
});
三、emit(event,[arg1],[arg2],[arg3]...) 触发监听事件
eventEmitter.emit('test','admin');
四、once(event, callback) 注册单次监听器
eventEmitter.once('onceEvent',(count)=>{
console.log('单次点击触发,二次将不存在'+count);
});
emit(event) 触发监听事件
//触发监听事件
eventEmitter.emit('onceEvent',1) //执行
eventEmitter.emit('onceEvent',2) //不执行
once注册的监听事件仅执行一次后,将被自动移除,二次执行将不会再触发事件
五、removeListener(event,callback) 移除指定监听事件
//创建监听事件
function callback(arg){
console.log("test5触发"+arg+'\n');
}
eventEmitter.on('test',callback)
//再次出发test
eventEmitter.emit('test','admin');
// 移除刚刚为创建的test监听事件
eventEmitter.removeListener('test', callback);
//再次出发test
eventEmitter.emit('test','admin');
六、listeners(event) 返回指定事件的监听器数组
var listenArry = eventEmitter.listeners('test');
console.log(listenArry.length);
七、【类方法】listenerCount(emitter, event); 返回指定事件的监听器数量‘
var count=eventEmitter.listenerCount('test');
console.log(count);
八、removeAllListeners()移除所有监听器或 removeAllListeners(event) 移除指定事件的所有监听器
//移除所有监听器
eventEmitter.removeAllListeners('test'); //移除test上的所有监听器
eventEmitter.removeAllListeners(); // 移除所有监听器
九、setMaxListeners(n) 更改监听器默认限制(监听器默认上限为10个,超过后会输出警告)
例如在 “二” 代码前添加:
eventEmitter.setMaxListeners(3);
事件
一、('newListener',listener ) 该事件在添加新监听器时被触发
let i=0;
eventEmitter.on('newListener',()=>{
i++;
console.log('第' + i + '次添加监听器成功');
})
二、('removeListener',listener ) 该事件在监听器被移除时触发
let remove = 0;
eventEmitter.on('removeListener', function () {
remove++;
console.log('第' + remove + '次移除监听器成功');
})
(这是在刚才的once注册事件前添加的代码,此结果也验证了,once是在执行添加成功后,立刻将该监听器移除了,因此该监听器只会执行一次)