as-event-emitter
v1.1.2
Published
Package implements modification of EventEmitter pattern
Downloads
12
Maintainers
Readme
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
не задан он будет сгенерирован.
arg | types | optional | default | describe
--- | --- | --- | --- |---
eventName | String | false | - | Имя события на которое нужно подписаться
handler | Function | false | - | Функция которая может быть вызвана при инициации события
handlerName | String, Null | true | null | Идетификатор обработчика, если не задан будет сгенерирован
behavior | Null, 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)
инициация события не произойдет и будет вызвана ошибка.
arg | types | optional | default | describe
--- | --- | --- | --- |---
eventName | String | false | - | Имя события которое нужно инициировать. Если события не существует будет вызвана ошибка.
handlerName | String, Array, Null | false | null | Идентификатор обработчика который должен быть вызваны, можно передать массив идентификаторов, тогда они все будут вызваны. Если передан Null будут вызваны все обработчики.
payload | Any | true | - | Все остальные аргументы быдут переданы в обработчики как полезная нагрузка.
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
у него существовало и не будет вызвывать ошибку при попытке инициации такого события.
При попытке удаления обработчика на событии которое на данный не существует будет вызвана ошибка.
arg | types | optional | default | describe
--- | --- | --- | --- |---
eventName | String | false | - | Имя события которое обработчики которого нужно удалить.
handlerName | String, Array, Null | false | null | Идентификатор обработчика который должен быть удален, можно передать массив идентификаторов, тогда они все будут удалены. Если передан 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");