前端知识学习

node.js不像html有什么冒泡之类的事件标签,node里只有event一大类事件模块

event事件模块

var EventEmitter = require('events').EventEmitter

var life = new EventEmitter() //创建一个EventEmitter实例

 //addEventListener 一个实例最多可以同时绑定十个事件否则就警报,按事件顺序执行

 life.on('求帮忙', function(who){  //求帮忙是事件名字
    console.log('给 ' + who + ' 倒水' )
 }) //绑定事件

 life.on('求帮忙', function(who){  
    console.log('给 ' + who + ' 洗衣服' )
 }) //绑定事件

 life.on('求帮忙', function(who){  
    console.log('给 ' + who + ' 做饭' )
 }) //绑定事件

 life.on('求帮忙', function(who){  
    console.log('给 ' + who + ' 洗碗' )
 }) //绑定事件

 //绑定事件另一种写法
 function cleaning(who){
    console.log('帮 ' + who + ' 扫地')
 }

 life.on('求帮忙',cleaning(who)) 


 life.emit('求帮忙', '我')  //触发事件


 life.removeListener('求帮忙', cleaning)
 //就可以移除这个监听事件
 life.removeAllListener('求帮忙')
 //移除这个事件名下的所有事件


 //不过也可以修改事件数量的最大值,注意下面这句要放在绑定事件的代码前
 life.setMaxListeners(11)

 var hasListened = life.emit('求帮忙', '我')
 //return true 这样写能判断一个事件有没有被监听 

 console.log(life.listeners('求帮忙').length)
 console.log(EventEmitter.listenerCount(life,'求帮忙'))
 //两种方法都会打印出来这个事件的个数