Simple Event Emitter
Simple Event Emitter is a reusable JavaScript snippet. A lightweight publish-subscribe event system. Useful for decoupling components in your application. The full implementation: class EventEmitter { constructor() { this._events = new Map() } on(event, listener) { if (!this._events.has(event)) this._events.set(event, []) this._events.get(event).push(listener) return () => this.off(event, listener) // Return unsubscribe } off(event, listener) { const listeners = this._events.get(event) if (listeners) this._events.set(event, listeners.filter(l => l !== listener)) } emit(event, ...args) { const listeners = this._events.get(event) if (listeners) listeners.forEach(l => l(...args)) } once(event, listener) { const wrapper = (...args) => { listener(...args) this.off(event, wrapper) } return this.on(event, wrapper) } removeAll(event) { if (event) this._events.delete(event) else this._events.clear()… This snippet uses only standard JavaScript with no dependencies, so it runs in modern browsers and Node.js alike. Browse more patterns in the snippet library, or paste the code straight into the playground to experiment with it.