Event emitter hub

PHOTO EMBED

Mon Jul 11 2022 18:44:57 GMT+0000 (Coordinated Universal Time)

Saved by @Explosion #javascript #event

let hub = () => ({
  hub: Object.create(null),
  emit(event, data) {
    (this.hub[event] || []).forEach((handler) => handler(data));
  },
  on(event, handler) {
    if (!this.hub[event]) this.hub[event] = [];
    this.hub[event].push(handler);
  },
  off(event, handler) {
    const i = (this.hub[event] || []).findIndex((h) => h === handler);
    if (i > -1) this.hub[event].splice(i, 1);
    if (this.hub[event].length === 0) delete this.hub[event];
  },
});
content_copyCOPY

https://gist.github.com/Explosion-Scratch/c853c40e4c4c0b7ad74f7d8644c238ba