TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #387 2.27K
Как работать с Event Emitter в async/await стиле?
#nodejs_api

В 2022 году асинхронных #nodejs код строиться на async/await. Однако важный модуль Event Emitter построен на callback-ах. Начиная с 12.16 версии в нем есть встроенный функционал для упрощения работы с Promise. За это отвечают две функции:
events.on(emitter, eventName[, options]) – возвращает AsyncIterator, который легко итерировать конструкцией for await
events.once(emitter, name[, options]) – возвращает Promise, который будет разрешен по событию.
В 16 Node.js добавили options для передачи AbortController.

Упрощенный пример кода демонстрирующий обе функции:
const events = require('events');
const { setTimeout } = require('timers/promises');
const server = require('http').createServer();

async function handle(req, res) {
await setTimeout(200);
res.end('Hello World');
}

async function bootstrap() {
server.listen(8080);
await events.once(server, 'listening')
for await (const [req, res] of events.on(server, 'request')) {
await handle(req, res);
}
}

bootstrap();

⚠️В пример await handle, сделано для демонстрации работы AsyncIterator. В результате такой конструкции HttpServer будет обрабатывать запросы не параллельно, а последовательно. Чтобы это исправить можно убрать await на этой строке.

Ссылки:
⚙️ Код на runkit
📕 Документация events
👩‍🍳 Обзор AbortController
  • 👍 18
  • 👎 1
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →