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,'求帮忙'))
//两种方法都会打印出来这个事件的个数