09

EventEmitter

20 min·senior·

Implement class EventEmitter:

  • on(event, handler) — register, returns an off function
  • off(event, handler) — remove
  • once(event, handler) — fire at most once
  • emit(event, ...args) — call all handlers in registration order

Handlers added during emit should NOT fire on the same emit pass.

expected time · O(1) on/off, O(handlers) emit
expected space · O(handlers)
10 lines
⏵ run · no run yet · ctrl+enter