Skip to content

GlobalRuniumEmitter

Функции для работы с событиями Runium.

Типы

EmitterEventName

typescript
type EmitterEventName = RuniumEvent | PropertyKey

Имя события. Можно использовать значение RuniumEvent или любое имя свойства (string, number или symbol).

EmitterEvent

typescript
type EmitterEvent<T> = {
  readonly name: EmitterEventName
  readonly data: T
}

Объект события, который передаётся слушателю.

Свойства:

  • name (EmitterEventName) - имя события
  • data (T) - данные события

EmitterListener

typescript
type EmitterListener<T> = (event: EmitterEvent<T>) => void | Promise<void>

Функция-слушатель события.

EmitterUnsubscriber

typescript
type EmitterUnsubscriber = () => void

Функция для отписки от события.

Методы

НаименованиеОписание
emitОпубликовать событие
onПодписаться на событие
onceПодписаться на событие один раз
onAnyПодписаться на любое событие
offОтписаться от события
offAnyОтписаться от прослушивания всех событий

Описание методов

emit

typescript
emit(eventName: EmitterEventName, data?: unknown): Promise<void>

Публикует событие с указанным именем и опциональными данными.

Параметры:

  • eventName (EmitterEventName) - имя события
  • data (unknown) - данные события

Возвращает: Promise - промис, который завершается после обработки события слушателями

Пример:

typescript
await runium.emitter.emit("some:event", {
  payload: "some-event-payload",
})

on

typescript
on<T>(
  eventName: EmitterEventName | EmitterEventName[],
  listener: EmitterListener<T>
): EmitterUnsubscriber

Подписывает слушатель на одно или несколько событий.

Параметры:

  • eventName (EmitterEventName | EmitterEventName[]) - имя события или массив имён событий
  • listener (EmitterListener) - функция-слушатель события

Возвращает: EmitterUnsubscriber - функция для отписки от события

Пример:

typescript
type SomeEventData = {
  payload: string
}

const unsubscribe = runium.emitter.on<SomeEventData>("some:event", event => {
  runium.output.info("Event received:", event.data.payload)
})

unsubscribe()

once

typescript
once<T>(
  eventName: EmitterEventName | EmitterEventName[]
): {
  off(): void
} & Promise<T>

Подписывает слушатель на одно или несколько событий и автоматически отписывает его после первого срабатывания.

Параметры:

  • eventName (EmitterEventName | EmitterEventName[]) - имя события или массив имён событий

Возвращает: { off(): void } & Promise - промис с данными первого события и метод off для отмены ожидания

Пример:

typescript
type SomeEventData = {
  payload: string
}

const { data } = await runium.emitter.once<SomeEventData>("some:event")
runium.output.info("Received event:", data.payload)

onAny

typescript
onAny<T>(
  listener: EmitterListener<T>
): EmitterUnsubscriber

Подписывает слушатель на все события.

Параметры:

  • listener (EmitterListener) - функция-слушатель события

Возвращает: EmitterUnsubscriber - функция для отписки от прослушивания всех событий

Пример:

typescript
const unsubscribe = runium.emitter.onAny(event => {
  runium.output.debug("Event received:", event.name, event.data)
})

unsubscribe()

off

typescript
off(
  eventName: EmitterEventName | EmitterEventName[],
  listener: EmitterListener
): void

Отписывает слушатель от одного или нескольких событий.

Параметры:

  • eventName (EmitterEventName | EmitterEventName[]) - имя события или массив имён событий
  • listener (EmitterListener) - функция-слушатель события

Пример:

typescript
const listener = event => {
  runium.output.info("Event received:", event.data)
}

runium.emitter.on("some:event", listener)
runium.emitter.off("some:event", listener)

offAny

typescript
offAny(listener: EmitterListener): void

Отписывает слушатель от прослушивания всех событий.

Параметры:

  • listener (EmitterListener) - функция-слушатель события

Пример:

typescript
const listener = event => {
  runium.output.debug("Event emitted:", event.name)
}

runium.emitter.onAny(listener)
runium.emitter.offAny(listener)