PassFront
  1. PassFront
  2. База знаний
  3. Основы Node.js

Что такое EventEmitter и как он работает?

Основы Node.js

EventEmitter — базовый класс Node.js для публикации и подписки на события; на нём построены потоки, HTTP-сервер и многое другое.

Основные методы

  • on(event, listener) — подписаться.
  • once(event, listener) — один раз.
  • emit(event, ...args) — вызвать все обработчики синхронно в порядке подписки.
  • off(event, listener) — отписаться.
import { EventEmitter } from 'node:events';

class Job extends EventEmitter {
  run() {
    this.emit('start');
    this.emit('done', { ok: true });
  }
}

const job = new Job();
job.on('done', (result) => console.log(result));
job.run();

Особенности

  • emit синхронный: обработчики выполняются сразу, внутри вызова.
  • Событие error особенное: без подписчика emit('error') выбросит исключение и может уронить процесс.
  • Больше 10 подписчиков на одно событие даёт предупреждение о возможной утечке; забытые on внутри функций приводят к росту памяти.

Коротко для собеседования

EventEmitter — шина событий. Он синхронный, требует отписки от лишних слушателей и обязывает вешать обработчик на error.

Другие вопросы раздела