Node.js Урок 5: Отслеживание событий EventEmitter

Подключение модуля событий

До сих пор мы подключали только созданные нами модули. Например, модуль sinx. В Node.js есть встроенные модули, один из которых отвечает за обработку событий. Для подключения встроенного модуля используется директива require:

const events = require('events');
const myEmitter = new events.EventEmitter();

Здесь подключается модуль events и создаётся переменная myEmitter, используемая для работы с событиями.

Создание и вызов события

Событие будем создавать и вызывать вручную. Это пригодится позже, при разработке сайта.

Создадим переменную для обработчика событий:

const myEmitter = new events.EventEmitter();

myEmitter — объект для отслеживания событий. Он содержит метод on(), аналогичный addListener() в jQuery. Синтаксис on():

myEmitter.on('myEvent', (text) => {
  console.log('Обработчик событий сработал:', text);
});

‘myEvent’ — имя события, функция-обработчик выводит переданный параметр text в консоль. Создаётся собственное событие ‘myEvent’.

Вызов события осуществляется методом emit():

myEmitter.emit('myEvent', 'Обработчик событий сработал');

В терминале появится сообщение: «Обработчик событий сработал: Обработчик событий сработал». Искусственно вызвано событие ‘myEvent’ с переданным параметром.

Наследование событий с помощью модуля util

Модуль util позволяет наследовать обработчики событий для объектов. Создадим конструктор объектов Cars:

const util = require('util');

function Cars(model) {
  this.model = model;
}

Используем util.inherits() для наследования обработчика событий от EventEmitter:

util.inherits(Cars, events.EventEmitter);

Теперь объекты, созданные на основе Cars, наследуют EventEmitter:

const bmw = new Cars('BMW');
const audi = new Cars('Audi');
const volvo = new Cars('Volvo');

const cars = [bmw, audi, volvo];

cars.forEach(car => {
  car.on('speed', (text) => {
    console.log(`${car.model}: ${text}`);
  });
});

bmw.emit('speed', '254.5 км/ч');
volvo.emit('speed', '180 км/ч');

Созданы три объекта, добавлен обработчик событий ‘speed’ и вызван для каждого объекта с индивидуальными параметрами. Виден вывод скорости для каждой машины, демонстрирующий удобство наследования событий. Модуль util упрощает работу с событиями, позволяя наследовать их для групп объектов.

В этом уроке освоено создание и отслеживание событий в Node.js, изучено использование модулей events и util для эффективной работы с событиями. Это значительно упрощает разработку сложных приложений.

Что будем искать? Например,программа