@disflyer/event-bus
Version:
a micro event bus (not only) for react ``` shell npm install @disflyer/event-bus yarn add @disflyer/event-bus ``` ``` javascript eventBus.on('your-event-name', () => { // some callback code }) // or eventBus.once('your-event-name', () => { // some callbac
2 lines (1 loc) • 544 B
JavaScript
const e=new class{constructor(){this.events=new Map}emit(e,t){const s=this.events.get(e);if(!s)return console.warn(`[${e}]`,"no event listening");s.forEach((e=>e(t)))}on(e,t){const s=this.events.get(e);if(null==s?void 0:s.some(t))return console.warn(`[${e}]`,"same callback has been add more than one time");s?this.events.set(e,[...s,t]):this.events.set(e,[t])}once(e,t){this.on(e,(async()=>{await t(),this.off(e,t)}))}off(e,t){const s=this.events.get(e);s&&(t?this.events.set(e,s.filter((e=>t!==e))):this.events.delete(e))}};export default e;