1. 程式人生 > >08慕課網《進擊Node.js基礎(一)》事件events

08慕課網《進擊Node.js基礎(一)》事件events

匿名函數 李白 function func 之前 慕課網 nod TP 不可

引用events模塊中的EventEmitter

事件的監聽和發射

相同的事件發射數量有限,可以通過setMaxListeners設置峰值

var EventEmitter = require(‘events‘).EventEmitter

var life = new EventEmitter()
//加不加都沒有報警告
//life.setMaxListeners(10)

life.on(‘clickEvent‘,function(who){
    console.log(‘給‘ + who + ‘ 倒水‘)
})

life.emit(‘clickEvent‘,‘漢子1‘)

技術分享圖片

每個emit都有返回值,表示是否有相應的監聽事件
var hasClickListener = life.emit(‘clickEvent‘,‘漢子12‘)
var hasChangeListener = life.emit(‘changeEvent‘,‘妹子1‘)

 console.log(hasClickListener)
 console.log(hasChangeListener)
 console.log(hasPutListener)
取消監聽
//可以放到 on 和 emit 後面
function water(who){
    console.log(‘給 ‘ + who + ‘ 倒水‘)
}

life.on(‘changeEvent‘,water)
//還沒有被取消,emit不能放到 on之前 life.emit(‘changeEvent‘,‘張三‘) //water不可以用匿名函數,removeListener需要在emit之前 life.removeListener(‘changeEvent‘,water) //移除所有監聽,可以傳遞事件名作為參數 //life.removeAllListeners() var hasChangeListener = life.emit(‘changeEvent‘,‘妹子1‘)//監聽被取消 var hasPutListener = life.emit(‘clickEvent‘,‘李白‘) // //是否被監聽 console.log(hasChangeListener) console.log(hasPutListener)

技術分享圖片

監聽數量
console.log(‘changeEvent:‘ + life.listeners(‘changeEvent‘).length)
console.log(‘clickEvent:‘ + life.listeners(‘clickEvent‘).length)
console.log(‘all:‘ + life.listeners.length)
//EventEmitter提供的方法
console.log(‘EventEmitter提供:‘)
console.log(‘changeEvent:‘ + EventEmitter.listenerCount(life,‘changeEvent‘))
console.log(‘clickEvent:‘ + EventEmitter.listenerCount(life,‘clickEvent‘))

技術分享圖片

08慕課網《進擊Node.js基礎(一)》事件events