JS Built-ins
DesignPatternsbeginner

Observer β€” Multiple subscribers

πŸ“– Usage Example
const emitter = createEmitter();
const log1 = v => console.log('A:', v);
const log2 = v => console.log('B:', v);
emitter.on(log1);
emitter.on(log2);
emitter.emit(42); // A: 42 then B: 42

Multiple listeners all receive the same emitted value.

Observer Pattern β€” Multiple Subscribers

A single event can have multiple subscribers. All subscribers should be called when the event is emitted.

Challenge: Create an EventEmitter that supports multiple listeners on the same event. All listeners should fire when the event is emitted.

Example:

const emitter = new EventEmitter()
let count = 0
emitter.on('increment', () => { count++ })
emitter.on('increment', () => { count++ })
emitter.emit('increment')
count // 2
πŸ’‘ Hints (3)
  • β€’ Store listeners in an array for each event
  • β€’ forEach over all listeners when emitting
  • β€’ Listeners execute in the order they were added