export class myEmmiter{
constructor(){
this.listeners =[];
this.laterListeners = [];
}
on(event,func){
if(!this.listeners[event]){
this.listeners[event] = [];
}
if(this.laterListeners.length >0){
//在有listener之前有emmit的情况
this.listeners[event].push(func);
this.laterListeners.forEach((item)=>{
this.emit(item.event,item.message)
})
}
this.listeners[event].push(func);
}
emit(event,message){
if(!this.listeners[event]){
//如果未注册emit了,保存起来先
let later = {
event:event,
message: message
}
this.laterListeners.push(later);
return;
}
if(this.listeners[event].length >0){
this.listeners[event].forEach(element => {
if(message){
element(message)
}
});
}
}
}
//做个单例
let emmiter;
export function getEmmiter(){
if(!emmiter){
emmiter = new myEmmiter();
}
return emmiter;
}
export const eventEmmiter = getEmmiter();