Выбор ответа Middle Асинхронные паттерны обновлено

EventEmitter синхронный или нет

Вопрос

Что выведет код?

const { EventEmitter } = require('node:events');
const e = new EventEmitter();
e.on('x', () => console.log('1'));
e.emit('x');
console.log('2');

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 1 2. emit вызывает всех слушателей синхронно, по порядку подписки, и возвращается только после них.

Варианты ответа

  1. 2 1
  2. 1, а 2 только после следующего тика
  3. 1 2правильный ответ
  4. Порядок не определён

Разбор

emit вызывает всех слушателей синхронно, по порядку подписки, и возвращается только после них. Поэтому 1, потом 2.

  • 2 1 было бы, если бы emit откладывал вызов, как setImmediate.
  • Никаких отложенных тиков здесь нет, порядок строго определён.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме