Тема: EventEmitter
Показать сообщение отдельно
  #18 (permalink)  
Старый 02.02.2014, 18:27
Интересующийся
Отправить личное сообщение для Nodeveloper Посмотреть профиль Найти все сообщения от Nodeveloper
 
Регистрация: 01.02.2014
Сообщений: 11

EventEmitter — это не объект, а класс, который реализует паттерн Observable (наблюдатель).
Смысл заключается в том, что классы, которые наследуются от EventEmitter-а могут испускать события, с помощью метода .emit(event:String, ...args), а другие объекты, могут подписываться на события с помощью .on(event:String, handler:Function).
Каждый раз, когда вызывается метод .emit, все функции, которые подписаны на это событие вызываются с аргументами ...args.
Одним из неприятных свойств EventEmitter-а, является то, что он хранит указатели на функции-обработчики, которые, в свою очередь, могут через замыкание ссылаться на другой объект. Это мешает сборщику мусора очистить память, занимаемую EventEmitter-ом. Поэтому, когда объект-наследник EventEmitter-а больше не нужен программе, следует отписывать его от всех событий с помощью метода .removeAllEvents().
Ответить с цитированием