Note: This blog is a study note when learning the basics of attacking Node.js (1) , thanks to Mr. Scott for his course.
Unlike html, node.js has event tags such as bubbling. In node, there are only event modules.
event event module
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,'求帮忙'))
//两种方法都会打印出来这个事件的个数