/** * 自定义的事件触发器 */ export default class EventService { static on(key, fn){ if(!this.events[key]){ this.events[key] = []; } for(let originFn of this.events[key]){ if(originFn === fn){ return; } } this.events[key].push(fn); return ()=>{ this.off(key,fn); } } static off(key,fn){ if(!this.events[key]){ return; } const fns = this.events[key]; for(let i=0;i<fns.length;i++){ if(fns[i] == fn){ fns.splice(i,1); return; } } } static async emit(key,arg){ if(!this.events[key]){ return; } const results = []; const fns = this.events[key]; for(let i = 0;i<fns.length;i++){ let result; try{ result = await fns[i](arg); }catch(error){ } results.push(result); } return results; } } EventService.events = {} const LOGIN="LOGIN" const LOGOUT="LOGOUT" export {LOGIN,LOGOUT}