1.1.2 • Published 4 years ago

as-event-emitter v1.1.2

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

Event Emitter

EventEmitter - библиотека управляения событиями. Дает возможность прослушать событие, инициировать его и отписаться от его прослушивания.

Экземпляр EventEmitter

EventEmitter - экземпляр класа управления событиями. Можно создать сколько угодно экземпляров EventEmitter, каждый экземпляр "знает" только о своих событиях и не может управлять событиями другого экземпляра.

import EmitterFactory from "as-event-emitter";

const emitter = EmitterFactory.create(); // создаст экземпляр EventEmitter;

emitter.on("event-name", (payload) => myFync(payload)); // прослушивание события "event-name"
emitter.emit("event-name", null, payload); // вызов события "event-name" и передача всем слушателям нагрузки 'payload'
emitter.off("event-name"); // удаление события и всех его слушателей события

Экземпляр EventEmitterFactory

EventEmitterFactory - фабрика экземпляров EventEmitter, предоставляет интерфейс для создания EventEmitter и информацию о версии библиотеки. Ничего не знает о событиях и не может ими управлять.

Методы и свойства EventEmitterFactory

EventEmitterFactory.create() - вернет новый экземпляр EventEmitter, не принимает никаких аргументов.

EventEmitterFactory.version - возвращает текущую версию библиотеки.

import EmitterFactory from "as-event-emitter";

const emitter = EmitterFactory.create(); // создаст экземпляр EventEmitter;

console.log(EmitterFactory.version); // вернет текущую версию пакета

Событие (Event)

Событие (Event) - под капотом это отдельный класс с идентификатором name и списком обработчиков handlers.

EventHandler - обработчик, функция которого может быть вызвана при инициации события. Состоит из уникального идентификатора и функции обработчика.

EventHandler (group) - тоже что и EventHandler, но может иметь более чем одну функцию.

EventEmitter methods

EventEmitter - реализует 3 метода для работы с событиями.

EventEmitter method on

emitter.on(eventName, handlder(...payload), [handlerName, behavior]) - добавляет обработчик handler к событию eventName экземпляра emitter и при вызове передаст в нее нагрузку payload. До первого вызова eventName не существует в экземпляре emitter и попытки инициации события приведут к ошибке. Возвращает идентификатор обработчика handlerName или ошибку. Если handlerName не задан он будет сгенерирован.

argtypesoptionaldefaultdescribe
eventNameStringfalse-Имя события на которое нужно подписаться
handlerFunctionfalse-Функция которая может быть вызвана при инициации события
handlerNameString, NulltruenullИдетификатор обработчика, если не задан будет сгенерирован
behaviorNull, ENUM ("error", "replace", "group")true"error"Устанавливает поведение метода в ситуации когда передан существующий handlerName. "error" - вызовет ошибку, "replace" - заменит существующий обработчик, "group" - добавит текщий обработчик к существующим.
Example
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3)); // Выведен в консоль "test", 1, "test2"
emitter.emit("event-name", null, "test", 1, "test2"); 

EventEmitter method emit

emitter.emit(eventName, [ handlerName, [...payload]]) - Инициирует событие eventName и вызов его обрабoтчиков. Если медод вызван до первого вызова emitter.on(eventName) инициация события не произойдет и будет вызвана ошибка.

argtypesoptionaldefaultdescribe
eventNameStringfalse-Имя события которое нужно инициировать. Если события не существует будет вызвана ошибка.
handlerNameString, Array, NullfalsenullИдентификатор обработчика который должен быть вызваны, можно передать массив идентификаторов, тогда они все будут вызваны. Если передан Null будут вызваны все обработчики.
payloadAnytrue-Все остальные аргументы быдут переданы в обработчики как полезная нагрузка.
Example
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "handler1"); // Выведен в консоль "test", 1, "test2"
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "test2"); // не будет вызван так как в данный момент вызывается только обработчик "handler1"
emitter.emit("event-name", "handler1", "test", 1, "test2"); 
Example2
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "handler1"); // Выведен в консоль "test", 1, "test2"
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "test2"); // Выведен в консоль "test", 1, "test2"
emitter.emit("event-name", null, "test", 1, "test2"); 

EventEmitter method off

emitter.off(eventName, [handlerName]) - удаляет обработчики с события eventName. При удалении последнего обработчика на событии экземпляр EventEmitter удалит его из списка своих событий, но будет знать что событие eventName у него существовало и не будет вызвывать ошибку при попытке инициации такого события. При попытке удаления обработчика на событии которое на данный не существует будет вызвана ошибка.

argtypesoptionaldefaultdescribe
eventNameStringfalse-Имя события которое обработчики которого нужно удалить.
handlerNameString, Array, NullfalsenullИдентификатор обработчика который должен быть удален, можно передать массив идентификаторов, тогда они все будут удалены. Если передан Null будут удалены все обработчики вместе с событием.
Example2
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "handler1"); // Выведен в консоль "test", 1, "test2"
emitter.on("event-name", (arg1, arg2, arg3) => console.log(arg1, arg2, arg3), "test2"); // Выведен в консоль "test", 1, "test2"
emitter.emit("event-name", null, "test", 1, "test2"); 
emitter.off("event-name", "handler");
1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.3

4 years ago

1.0.0

4 years ago