只储存一个回调函数
class EventsEmitter{
constructor(){
this.events=new Map()
}
on(name, callback){
if(!this.events.has(name)){
this.events.set(name,callback)
}
}
off(name, callback){
if(this.events.has(name)){
const eventListeners = this.events.get(name)
eventListeners.splice(0,1)
}
}
emit(name, data){
if(this.events.has(name)){
this.events.get(name)(data)
}
}
}
let emitter = new EventsEmitter()
export default emitter
储存多个回调函数
class EventsEmitter{
constructor(){
this.events=new Map()
}
on(name, callback){
if(!this.events.has(name)){
this.events.set(name,[])
}
this.events.get(name).push(callback)
}
off(name, callback){
if(this.events.has(name)){
const eventListeners = this.events.get(name)
const index = eventListeners.indexof(callback)
if(index != -1) {
eventListeners.splice(index, 1)
}
}
}
emit(name, data){
if(this.events.has(name)){
const eventListeners = this.events.get(name)
eventListeners.forEach((callback) => callback(data))
}
}
let emitter = new EventsEmitter()
export default emitter
emitter.emit('eventName', {'detail': "abc"})
Emitter.on('eventName', (res) => {
console.log('res', res)
})
//res {'detail': "abc"}