Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Event Emitter, events, subscribe, publish, listeners, Node.js

Что происходит внутри Event Emitter при подписке и публикации событий?

Проверяет понимание механизма работы Event Emitter, включая подписку на события и их публикацию.

Короткий ответ

Event Emitter — это паттерн, позволяющий объектам подписываться на события и реагировать на них. При подписке (on) функция-обработчик добавляется в массив слушателей для конкретного события. При публикации (emit) вызываются все обработчики, подписанные на это событие, с переданными аргументами. Это основа асинхронной работы в Node.js.

Длинный ответ

Что такое Event Emitter?

Event Emitter — это реализация паттерна "Наблюдатель" (Observer), широко используемая в Node.js. Он позволяет объектам генерировать события и уведомлять подписанных слушателей. Это ключевой механизм для асинхронной обработки, например, при работе с потоками, HTTP-запросами или пользовательскими событиями.

Как работает подписка?

При вызове метода on(event, listener) или addListener(event, listener) функция-обработчик добавляется во внутренний массив слушателей для указанного события. Если событие уже имеет слушателей, новый просто добавляется в конец списка. Можно также подписаться однократно через once — после первого вызова слушатель автоматически удаляется.

Как работает публикация?

При вызове emit(event, ...args) Event Emitter проходит по всем слушателям данного события и вызывает их синхронно в порядке добавления, передавая аргументы. Если слушателей нет, событие игнорируется (если не установлен специальный обработчик на error).

Пример кода

const EventEmitter = require('events');
const emitter = new EventEmitter();

// Подписка на событие 'data'
emitter.on('data', (msg) => {
  console.log('Получено:', msg);
});

// Публикация события
emitter.emit('data', 'Hello!');
// Вывод: Получено: Hello!

Где применяется?

  • В Node.js: потоки (Streams), HTTP-серверы, сокеты.
  • В браузере: пользовательские события через CustomEvent.
  • В архитектуре: для слабой связанности компонентов.

Вывод: Event Emitter полезен для создания событийно-ориентированных систем, где компоненты общаются через события, а не прямые вызовы. Это упрощает масштабирование и тестирование.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#Event Emitter

#events

#subscribe

#publish

#listeners

#Node.js

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию