GlobalRuniumEmitter
Функции для работы с событиями Runium.
Типы
EmitterEventName
type EmitterEventName = RuniumEvent | PropertyKeyИмя события. Можно использовать значение RuniumEvent или любое имя свойства (string, number или symbol).
EmitterEvent
type EmitterEvent<T> = {
readonly name: EmitterEventName
readonly data: T
}Объект события, который передаётся слушателю.
Свойства:
name(EmitterEventName) - имя событияdata(T) - данные события
EmitterListener
type EmitterListener<T> = (event: EmitterEvent<T>) => void | Promise<void>Функция-слушатель события.
EmitterUnsubscriber
type EmitterUnsubscriber = () => voidФункция для отписки от события.
Методы
| Наименование | Описание |
|---|---|
| emit | Опубликовать событие |
| on | Подписаться на событие |
| once | Подписаться на событие один раз |
| onAny | Подписаться на любое событие |
| off | Отписаться от события |
| offAny | Отписаться от прослушивания всех событий |
Описание методов
emit
emit(eventName: EmitterEventName, data?: unknown): Promise<void>Публикует событие с указанным именем и опциональными данными.
Параметры:
eventName(EmitterEventName) - имя событияdata(unknown) - данные события
Возвращает: Promise - промис, который завершается после обработки события слушателями
Пример:
await runium.emitter.emit("some:event", {
payload: "some-event-payload",
})on
on<T>(
eventName: EmitterEventName | EmitterEventName[],
listener: EmitterListener<T>
): EmitterUnsubscriberПодписывает слушатель на одно или несколько событий.
Параметры:
eventName(EmitterEventName | EmitterEventName[]) - имя события или массив имён событийlistener(EmitterListener) - функция-слушатель события
Возвращает: EmitterUnsubscriber - функция для отписки от события
Пример:
type SomeEventData = {
payload: string
}
const unsubscribe = runium.emitter.on<SomeEventData>("some:event", event => {
runium.output.info("Event received:", event.data.payload)
})
unsubscribe()once
once<T>(
eventName: EmitterEventName | EmitterEventName[]
): {
off(): void
} & Promise<T>Подписывает слушатель на одно или несколько событий и автоматически отписывает его после первого срабатывания.
Параметры:
eventName(EmitterEventName | EmitterEventName[]) - имя события или массив имён событий
Возвращает: { off(): void } & Promise - промис с данными первого события и метод off для отмены ожидания
Пример:
type SomeEventData = {
payload: string
}
const { data } = await runium.emitter.once<SomeEventData>("some:event")
runium.output.info("Received event:", data.payload)onAny
onAny<T>(
listener: EmitterListener<T>
): EmitterUnsubscriberПодписывает слушатель на все события.
Параметры:
listener(EmitterListener) - функция-слушатель события
Возвращает: EmitterUnsubscriber - функция для отписки от прослушивания всех событий
Пример:
const unsubscribe = runium.emitter.onAny(event => {
runium.output.debug("Event received:", event.name, event.data)
})
unsubscribe()off
off(
eventName: EmitterEventName | EmitterEventName[],
listener: EmitterListener
): voidОтписывает слушатель от одного или нескольких событий.
Параметры:
eventName(EmitterEventName | EmitterEventName[]) - имя события или массив имён событийlistener(EmitterListener) - функция-слушатель события
Пример:
const listener = event => {
runium.output.info("Event received:", event.data)
}
runium.emitter.on("some:event", listener)
runium.emitter.off("some:event", listener)offAny
offAny(listener: EmitterListener): voidОтписывает слушатель от прослушивания всех событий.
Параметры:
listener(EmitterListener) - функция-слушатель события
Пример:
const listener = event => {
runium.output.debug("Event emitted:", event.name)
}
runium.emitter.onAny(listener)
runium.emitter.offAny(listener)