node事件监听

创建文件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是在执行添加成功后,立刻将该监听器移除了,因此该监听器只会执行一次)

 

你可能感兴趣的:(node)