npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

as-event-emitter

v1.1.2

Published

Package implements modification of EventEmitter pattern

Downloads

12

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");