Ответ
EventEmitter — это паттерн, позволяющий объектам подписываться на события и реагировать на них. В JavaScript он часто реализуется через класс, который предоставляет методы on
(подписка), emit
(инициация события) и off
(отписка).
Пример реализации:
class EventEmitter {
constructor() {
this.events = {};
}
on(event, listener) {
if (!this.events[event]) this.events[event] = [];
this.events[event].push(listener);
}
emit(event, ...args) {
if (this.events[event]) {
this.events[event].forEach(listener => listener(...args));
}
}
off(event, listener) {
if (this.events[event]) {
this.events[event] = this.events[event].filter(l => l !== listener);
}
}
}
Использование:
const emitter = new EventEmitter();
emitter.on('message', (text) => console.log(text));
emitter.emit('message', 'Hello!'); // Выведет "Hello!"
Используется в Node.js (events
модуль), Vue.js (EventBus) и других библиотеках.