event
概念
1.Node中的event沒(méi)有默認(rèn)行為和事件冒泡
2.const EventEmitter = require('events'); //返回一個(gè)類(lèi)
3.通常我們需要繼承EventEmitter 來(lái)實(shí)現(xiàn)事件
4.一個(gè)EventEmitter 對(duì)象默認(rèn)最大可以有10個(gè)監(jiān)聽(tīng)觅闽,可以通過(guò)emitter.setMaxListeners()來(lái)設(shè)置最大監(jiān)聽(tīng)數(shù)
5.大多數(shù)Nde.js 核心對(duì)象都繼承實(shí)踐類(lèi)
添加監(jiān)聽(tīng)
1.emitter.addListener(enentName,listener)
2.emitter.on(eventName,listener)
3.emitter.once(eventName,listener)
注意點(diǎn)
和瀏覽器端事件不同惑灵,監(jiān)聽(tīng)函數(shù)的第一個(gè)參數(shù)就是觸發(fā)時(shí)傳入的參數(shù)而不是event對(duì)象
emitter.addListener和emitter.on是同一個(gè)方法
觸發(fā)事件
emitter.emit(eventName[,...args])
注意點(diǎn)
和瀏覽器端的事件不同祸泪,傳入?yún)?shù)不用數(shù)組而是參數(shù)列表
移除事件
emitter.removeListener(eventName,listenner)
emitter.off(eventName,listenner)
注意點(diǎn)
emitter.removeListener是同一個(gè)方法
emitter.off()必須node版本大于V10.0.0
const EventEmitter = require('events');
class myEmitter extends EventEmitter{
}
let myEmitters = new myEmitter();
let list = ['1','2'];
myEmitters.setMaxListeners(5)
myEmitters.addListener('text',(...arg)=>{
console.log(...arg);
console.log('events addListener')
})
myEmitters.emit('text','aa','bb',list);