9. Event Emitter

Сложно
eventsobserverclass

Реализуйте класс EventEmitter с методами on, off, emit и once для управления событиями.

Каждый способ должен быть реализован независимо в своём контейнере:

  1. on() подписывает listener на событие
  2. off() отписывает конкретный listener
  3. emit() вызывает все listener'ы с аргументами
  4. once() вызывает listener только один раз
  5. on/off/once возвращают this для цепочки вызовов
  6. emit возвращает boolean

Реализуйте класс EventEmitter со следующими методами: - on(event, listener) — подписывает listener на событие event. Возвращает this. - off(event, listener) — отписывает конкретный listener от события. Возвращает this. - emit(event, ...args) — вызывает все listener'ы для события с переданными аргументами. Возвращает true, если были слушатели. - once(event, listener) — подписывает listener, который будет вызван только один раз, а затем автоматически отписан.

Примеры

Пример 10
Вход:
ee.on('data', fn); ee.emit('data', 42);
Ожидаемый результат:

fn вызвана с аргументом 42

Подсказка:

emit вызывает все слушатели, зарегистрированные через on

Пример 11
Вход:
ee.once('connect', fn); ee.emit('connect'); ee.emit('connect');
Ожидаемый результат:

fn вызвана только 1 раз

Подсказка:

once автоматически удаляет слушатель после первого вызова

Ограничения

  • Не использовать Node.js EventEmitter
  • Не использовать сторонние библиотеки
0% принято
0 решений