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)