Event Emitter Pattern

JavaScript 🟡 Mid

Definition

Pattern publish/subscribe ou un emetteur envoie des evenements nommes et des listeners s'y abonnent. Base de EventTarget (DOM) et EventEmitter (Node.js).

Analogie

Une radio : l'emetteur diffuse sur une frequence (evenement) et tous les recepteurs branches sur cette frequence captent le message.

Exemple de code

class Emitter {
  #events = {};
  on(evt, fn) {
    (this.#events[evt] ??= []).push(fn);
  }
  emit(evt, ...args) {
    this.#events[evt]?.forEach(fn => fn(...args));
  }
}
const bus = new Emitter();
bus.on('data', console.log);

Cas d'usage

Communication decouple entre composants, bus d'evenements, architecture event-driven.

Anti-pattern

Ne jamais off() les listeners, causant des memory leaks et des callbacks zombies.
#core#pattern#architecture