Разница между 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