Назад к вопросам
Middle
163
questionbank
Что вы знаете о классе EventEmitter в Node.js?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
EventEmitter - класс в Node.js, который лежит в основе многих встроенных модулей (например, http, fs), и используется для реализации событийной модели.
Основные возможности:
- Подписка на события: Позволяет регистрировать функции (обработчики), которые будут выполняться при возникновении определенного события.
- Эмиссия событий: Позволяет вызывать (эмитировать) события, запуская зарегистрированные обработчики.
- Передача данных: При эмиссии события можно передавать любые данные обработчикам.
Основные методы:
emitter.on(eventName, listener): Добавляет обработчикlistenerдля событияeventName.emitter.once(eventName, listener): Добавляет одноразовый обработчикlistenerдля событияeventName. Он будет вызван только один раз при первом срабатывании события.emitter.emit(eventName[, ...args]): Вызывает всех обработчиков, зарегистрированных для событияeventName, передавая им аргументы...args.emitter.removeListener(eventName, listener): Удаляет конкретный обработчикlistenerдля событияeventName.emitter.removeAllListeners([eventName]): Удаляет все обработчики для событияeventName. ЕслиeventNameне указан, удаляет всех обработчиков для всех событий.
Пример использования:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', (a, b) => {
console.log('событие произошло!', a, b);
});
myEmitter.emit('event', 'аргумент а', 'аргумент б'); // Выведет: событие произошло! аргумент а аргумент б
EventEmitter реализует паттерн "Наблюдатель". Это позволяет строить слабосвязанные системы, где компоненты взаимодействуют через события, не зная о внутренней реализации друг друга.