Реализуйте класс EventEmitter

/* Задача

Реализуйте класс EventEmitter, который обеспечивает следующий функционал:

- Подписка на событие с помощью метода on(eventName, listener).
- Однократная подписка на событие с помощью метода once(eventName, listener), после которого слушатель будет автоматически удален после первого вызова.
- Отписка от события с помощью метода off(eventName, listener).
- Генерация события с помощью метода emit(eventName, ...args), который вызывает все слушатели, зарегистрированные на это событие, с переданными аргументами.

// Пример использования:
const emitter = new EventEmitter();

function responseToEvent(msg) {
    console.log(`Получено сообщение: ${msg}`);
}

emitter.on('message', responseToEvent);

emitter.emit('message', 'Hello World!'); // Вывод: Получено сообщение: Hello World!

emitter.off('message', responseToEvent);

emitter.emit('message', 'Hello again!'); // Ничего не происходит

emitter.once('onceEvent', (msg) => {
    console.log(`Однократное событие: ${msg}`);
});

emitter.once('onceEvent', (msg) => {
    console.log(`Однократное событие: ${msg}`);
});

emitter.emit('onceEvent', 'Первый вызов'); // Вывод: Однократное событие: Первый вызов
emitter.emit('onceEvent', 'Второй вызов'); // Ничего не происходит // void

*/

class EventEmitter {}

Оставьте комментарий