NodeJS. Обработчик событий.
Всем привет! В этой статье мы рассмотрим, как работает обработчик событий в NodeJS.
В прошлой статье мы рассмотрели, как писать и подключать свои модули в платформу, но помимо этого в самом NodeJS уже встроено множество разных модулей, которые мы можем просто подключить и использовать их функционал.
Давайте подключим модуль:
// файл app.js
var events = require('events');
Давайте рассмотрим конструктор EventEmitter.
var myEmitter = new events.EventEmitter();
Теперь мы можем использовать функционал событий. Например, вот так:
myEmitter.on('someEvent', function(message) {
console.log(message);
});
Когда случится событие someEvent, вызовется функция, которая выведет переданное в нее сообщение.
Чтобы вызвать событие, мы должны написать следующее:
myEmitter.emit('someEvent', 'сообщение');
Метод emit принимает первым параметром событие, которое должно быть вызвано, а потом все необходимые аргументы. В нашем случае это сообщение.
Рассмотрим более интересный пример. Для этого нам нужно подключить еще один модуль с утилитами.
var util = require('util');
Создадим объект:
var Person = function(name) {
this.name = name;
};
Допустим, что теперь мы хотим, чтобы все объекты Person наследовали EventEmitter. Для этого нужно сделать следующее:
util.inherits(Person, events.EventEmitter);
var james = new Person('James');
var mary = new Person('Mary');
var ryu = new Person('Ryu');
var people = [james, mary, ryu];
people.forEach(function(person) {
person.on('speak', function(message) {
console.log(person.name + " сказал: " + message);
});
});
james.emit('speak', 'Всем привет!');
Здесь мы сначала используем метод inherits у модуля util, чтобы Person начал наследовать EventEmitter, потом создаем несколько объектов Person, создаем переменную, куда помещаем все ссылки на объекты, затем в цикле перебираем весь массив и каждому вешаем событие speak, при вызове которого должна вызваться функция, которая выведет имя, а затем текст сообщения. Чтобы вызвать событие, мы используем уже известный нам метод emit.
А на этом сегодня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.