EventEmitter Node.js — Эмиттер событий

EventEmitter Node.js — Эмиттер событий

От автора: многие объекты в Node запускают события, например, net.Server запускает событие при каждом подключении к нему, fs.readStream запускает событие при открытии файла. Все объекты, которые запускают события, являются экземплярами Node js EventEmitter.

Класс EventEmitter

Как было сказано раннее, класс EventEmitter хранится в модуле событий. К нему можно получить доступ с помощью следующего кода:

// Импорт модуля событий
var events = require('events');
 
// Создание объекта eventEmitter
var eventEmitter = new events.EventEmitter();

Когда экземпляр EventEmitter находит ошибку, он запускает событие «error». Когда добавляется новый прослушиватель, запускается событие «newListener», а когда прослушиватель удаляется, запускается событие «removeListener». EventEmitter предоставляет несколько свойств, таких как on и emit. Свойство on используется для привязки функции к событию, а свойство emit используется для запуска события.

Методы

addListener(event, listener) — Добавляет прослушиватель в конце массива прослушивателей для указанного события. Не проверяется, добавлен ли прослушиватель. Несколько вызовов, передающих одну и ту же комбинацию события и прослушивателя, приведут к тому, что прослушиватель будет добавлен несколько раз. Возвращает эмиттер, поэтому события могут запускаться последовательно цепочкой.

on(event, listener) — Добавляет прослушивателя в конце массива прослушивателей для указанного события. Проверка добавлен ли уже прослушиватель не выполняется. Несколько вызовов, передающих одну и ту же комбинацию события и прослушивателя, приведут к тому, что прослушиватель будет добавлен несколько раз. Возвращает эмиттер, поэтому события могут запускаться последовательно цепочкой.

Фреймворк VUE JS: быстрый старт, первые результаты

Получите бесплатный курс и создайте веб-приложение на трендовой Frontend-технологии VUE JS с полного нуля

Узнать подробнее

once(event, listener) — Добавляет одиночный прослушиватель события. Этот прослушиватель вызывается только при следующем запуске события, после которого он будет удален. Возвращает эмиттер, поэтому события могут запускаться последовательно цепочкой.

removeListener(event, listener) — Удаляет прослушиватель из массива прослушивателей для указанного события. Обратите внимание: Этот метод изменяет индексирование массива прослушивателей после удаления события. removeListener удаляет не более одного экземпляра прослушивателя из массива прослушивателя. Если определенный прослушиватель был добавлен в массив прослушивателей для указанного события несколько раз, то removeListener нужно вызвать несколько раз, чтобы удалить каждый экземпляр. Возвращает эмиттер, поэтому события могут запускаться последовательно цепочкой.

removeAllListeners([event]) — Удаляет все прослушиватели для указанного события. Не рекомендуется удалять прослушиватели, которые были добавлены в другом месте кода, особенно в эмиттере, который вы не создавали (например, сокеты или потоки файлов). Возвращает эмиттер, поэтому события могут запускаться последовательно цепочкой.

setMaxListeners(n) — По умолчанию EventEmitters выдаст предупреждение, если для определенного события добавлено более 10 прослушивателей. Это значение по умолчанию, которое помогает оптимизировать использование памяти. Очевидно, что не для всех эмиттеров должно быть установлено ограничение в 10. Данная функция позволяет увеличить этот лимит. Чтобы снять ограничения нужно установить значение ноль.

listeners(event) — Возвращает массив прослушивателей для указанного события.

emit(event, [arg1], [arg2], [...]) — Выполняет все прослушиватели в порядке указанном в аргументах. Возвращает true, если для события добавлены прослушиватели, в противном случае — false.

Методы классов

listenerCount(emitter, event) — Возвращает количество прослушивателей для данного события.

События

NewListener. event — строка: имя события; listener — функция: функция обработчика событий. Это событие запускается при каждом добавлении прослушивателя. В момент запуска этого события прослушиватель может быть еще не добавлен в массив прослушивателей для события.

removeListener. event – строка: имя события; listener – функция: функция обработчика событий. Это событие запускается каждый раз при удалении прослушивателя. В момент запуска этого события прослушиватель может быть еще не удален из массива прослушивателей для события.

Пример

Создайте файл js с именем main.js со следующим кодом Node.js:

var events = require('events');
var eventEmitter = new events.EventEmitter();
 
// прослушиватель #1
var listner1 = function listner1() {
 console.log('listner1 executed.');
}
 
// прослушиватель #2
var listner2 = function listner2() {
  console.log('listner2 executed.');
}
 
// Привязка функции прослушивателя 1 к событию
eventEmitter.addListener('connection', listner1);
 
// Привязка функции прослушивателя 2 к событию
eventEmitter.on('connection', listner2);
 
var eventListeners = require('events').EventEmitter.listenerCount
 (eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
 
// Запуск события connection
eventEmitter.emit('connection');
 
// Удаление привязанной функции прослушивателя 1
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");
 
// Запуск события connection
eventEmitter.emit('connection');
 
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
 
console.log("Program Ended.");

Теперь запустите main.js:

$ node main.js

В результате вы должны получить следующее.

2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк VUE JS: быстрый старт, первые результаты

Получите бесплатный курс и создайте веб-приложение на трендовой Frontend-технологии VUE JS с полного нуля

Узнать подробнее

Курс по NodeJS. Основы

Прямо сейчас посмотрите курс по NodeJS!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree