NodeJS——事件监听

var EventEmitter = require('events').EventEmitter
var xx = new EventEmitter()
xx.setMaxListeners(11) //设置最大监听数量,超过的会报错(溢出),默认为10
xx.on('eventName',function)// 监听事件
xx.emit('eventName',参数)//响应监听事件,
xx.removeAllListeners() //移除xx.所有监听
xx.removeAllListeners('eventName') //移除xx.所有eventName监听
x.listeners('eventName').length //xx的eventName监听数量
EventEmitter.listenerCount(xx, 'eventName')//同上,xx的eventName监听数量

【实例】

代码:

var EventEmitter = require('events').EventEmitter
var life = new EventEmitter()
life.setMaxListeners(11)
function fun1(who){
    console.log(who+'1');
}
life.on('a',fun1)
life.on('a',function(who){
    console.log(who+'2');
})
life.on('a',function(who){
    console.log(who+'3');
})
life.on('a',function(who){
    console.log(who+'4');
})
life.on('a',function(who){
    console.log(who+'5');
})
life.on('a',function(who){
    console.log(who+'6');
})
life.on('a',function(who){
    console.log(who+'7');
})
life.on('a',function(who){
    console.log(who+'8');
})
life.on('a',function(who){
    console.log(who+'9');
})
life.on('a',function(who){
    console.log(who+'10');
})
life.on('a',function(who){
    console.log(who+'11');
})
var hasAListener = life.emit('a','zdy');
console.log("初始是否被监听:"+ hasAListener);
console.log("初始监听数量:" + life.listeners('a').length); 
life.removeListener('a',fun1); //移除监听
hasAListener = life.emit('a','zdy');
console.log("移除一个监听之后的监听数量:"+life.listeners('a').length); 
console.log("移除一个监听之后是否被监听:"+ hasAListener);
life.removeAllListeners('a'); //移除全部监听
hasAListener = life.emit('a','zdy');
console.log("移除全部监听之后的监听数量:"+life.listeners('a').length); 
console.log("移除所有监听之后是否被监听:"+ hasAListener);
console.log(EventEmitter.listenerCount(life, 'a'));

结果:

zdy1
zdy2
zdy3
zdy4
zdy5
zdy6
zdy7
zdy8
zdy9
zdy10
zdy11
初始是否被监听:true
初始监听数量:11
zdy2
zdy3
zdy4
zdy5
zdy6
zdy7
zdy8
zdy9
zdy10
zdy11
移除一个监听之后的监听数量:10
移除一个监听之后是否被监听:true
移除全部监听之后的监听数量:0
移除所有监听之后是否被监听:false
0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,761评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,471评论 1 9
  • 表情包漫谈 (本文全靠猜测,未进行任何查证,如有错漏之处,欢迎指正) 表情包如今已经成为大家的“随身物品”,出现在...
    PervasvFragrce阅读 1,206评论 0 6