Разница между EventEmitter и NodeEventTarget

Опубликовано: 26 Декабря, 2021

EventEmitter: все EventEmitter испускают событие newListener при добавлении новых слушателей и removeListener при удалении существующих слушателей. Он определяется и отображается модулем событий:

Чтобы импортировать EventEmitter , используйте следующий оператор импорта:

 const EventEmitter = require ('события');

NodeEventTarget: объекты EventTarget и Event представляют собой специфичную для Node.js реализацию веб-API EventTarget , предоставляемую некоторыми базовыми API-интерфейсами Node.js.

Разница между EventEmitter и NodeEventTarget:

Эмиттер событий Цель события узла
Он унаследован от модуля событий JavaScript. Это модифицированное подмножество EventEmitter API, унаследованное от него.
Он реализует is- связь с модулем событий. Он реализует связь is-a с API EventTarget.
В eventEmitter для одного и того же события мы можем разрешить регистрацию нескольких слушателей. Любой слушатель может быть зарегистрирован один раз для каждого типа события, и он игнорируется, если пытается зарегистрировать слушателя несколько раз.
Он максимально эмулирует такие события, как «ошибка», «классы», выбросы и т. Д. Он не эмулирует полный API , EventEmitter как prependListener (), prependOnceListener (), rawListeners () и т.д.
По умолчанию он регистрирует информацию и завершает текущее выполнение. Для событий типа «ошибка » он не реализует поведение по умолчанию.
Если в экземпляре EventEmitter возникает ошибка, то обычно возникает событие «ошибка». Он поддерживает объекты и функции EventListener как обработчики для всех типов событий.
Все EventEmitter испускают событие «NewListener», когда будут добавлены новые слушатели и «удаления слушателя » , когда слушатели будут удалены. Это не экземпляр EventEmitter, и в большинстве случаев его нельзя использовать вместо EventEmitter.

Синтаксис:

 emitter.once (
  eventName, слушатель)

Синтаксис:

 nodeEventTarget.once (
  тип, слушатель [, параметры])

Ссылка: https://nodejs.org/api/events.html#events_nodeeventtarget_vs_eventemitter