as-event-emitter v1.1.2
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");