[{"data":1,"prerenderedAt":53},["ShallowReactive",2],{"content:\u002Fposts\u002F2024\u002Fevent-bus":3,"surround:\u002Fposts\u002F2024\u002Fevent-bus":42},{"id":4,"title":5,"body":6,"canonical":23,"categories":24,"date":26,"description":23,"draft":27,"extension":28,"image":23,"meta":29,"navigation":30,"path":31,"permalink":23,"readingTime":32,"recommend":23,"references":23,"seo":37,"sitemap":38,"stem":39,"tags":40,"type":23,"updated":26,"__hash__":41},"content\u002Fposts\u002F2024\u002Fevent-bus.md","发布订阅模式",{"type":7,"value":8,"toc":20},"minimark",[9],[10,11,17],"pre",{"className":12,"code":14,"language":15,"meta":16},[13],"language-ts","type Rets = any[]\ntype CallBack = (...ret: Rets) => void\n\nclass EventBus {\n    events: Record\u003Cstring, Set\u003CCallBack>> = {}\n    on(eventName: string, cb: CallBack) {\n        if (!events[eventName]) {\n            this.events[eventName] = new Set()\n        }\n        this.events[eventName].add(cb)\n    }\n\n    emit(eventName: string, ...ret: Rets) {\n        this.events[eventName].forEach(cb => cb(...ret))\n    }\n\n    off(eventName: string, cb: CallBack) {\n        this.events[eventName].delete(cb)\n    }\n\n    once(eventName: string, cb: CallBack) {\n        const handler = (...ret: Rets) => {\n            cb(...ret)\n            this.off(eventName, handler)\n        }\n        this.on(eventName, cb)\n    }\n}\n\nconst bus = new EventBus()\nbus.emit(\"change\", \"hello world\")\n","ts","",[18,19,14],"code",{"__ignoreMap":16},{"title":16,"searchDepth":21,"depth":21,"links":22},4,[],null,[25],"代码","2024-08-16 23:50:01",false,"md",{"cover":23,"banner":23},true,"\u002Fposts\u002F2024\u002Fevent-bus",{"text":33,"minutes":34,"time":35,"words":36},"1 min read",0.39,23400,78,{"title":5,"description":23},{"loc":31},"posts\u002F2024\u002Fevent-bus",[],"Hkm7e-G3IwzG8CV4rZUdKtH1j5VdV0C20zCaFL6oaRg",[43,48],{"title":44,"path":45,"stem":46,"date":47,"type":23,"children":-1},"mongodb快速使用","\u002Fposts\u002F2024\u002Fmongodb-setup","posts\u002F2024\u002Fmongodb-setup","2024-08-01 22:28:48",{"title":49,"path":50,"stem":51,"date":52,"type":23,"children":-1},"Nuxt报错解决","\u002Fposts\u002F2024\u002Fnuxt3-server-error","posts\u002F2024\u002Fnuxt3-server-error","2024-09-09 15:33:19",1789642591616]