Skip to content

Event

Event — класс для публикации событий и подписки на события платформы Аспро.Cloud из мини‑приложения. Допускается создание произвольного количества экземпляров для разных целевых событий.

ts
import { Event } from '@aspro-cloud/miniapp-jssdk'

Конструктор

Создает экземпляр Event с переданными параметрами

ts
constructor(params: EventParams)
ПараметрТипОписание
paramsEventParamsПараметры создания события

Свойства

events

Объект типа EventCallbacks<EventEventName> с обработчиком события onEmit

ts
get events(): EventCallbacks
set events(value: EventCallbacks)

target

Объект EventTarget, идентифицирующий целевое событие, задаётся через конструктор

ts
target: EventTarget

Методы

destroy

Удаляет подписки и освобождает ресурсы

ts
destroy(): void

emit

Публикует событие на платформе — все подписчики целевого события EventTarget получают данные EventInfo

ts
static async emit(params: EventEmitParams): Promise<any>
ПараметрТипОписание
paramsEventEmitParamsПараметры публикации события

off

Снимает подписку, ранее установленную через on() или once()

ts
async off(): Promise<any>

on

Регистрирует обработчик события onEmit, срабатывает каждый раз при наступлении события на платформе с совпадающим target

ts
async on(callback: EventCallback): Promise<any>
ПараметрТипОписание
callbackEventCallbackОбработчик события onEmit

once

Регистрирует одноразовый обработчик события onEmit — снимается автоматически после первого срабатывания

ts
async once(callback: EventCallback): Promise<any>
ПараметрТипОписание
callbackEventCallbackОбработчик события onEmit

Пример

ts
import { App, Event } from '@aspro-cloud/miniapp-jssdk'

await App.initializeFrame()

// публикация произвольного события и передача произвольных данных
await Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
})

// подписка на открытие боковой панели
const sidepanelOpened = new Event({
  target: {
    code: 'sidepanel_opened'
  }
})

await sidepanelOpened.on(async (info) => {
  console.log('Боковая панель открыта', info)

  // снятие подписки на открытие
  await sidepanelOpened.off()

  // и одиночная подписка на закрытие
  new Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Боковая панель закрыта', info)
  })
})
js
const App = window.ACloudMiniApp;

await App.initializeFrame();

// публикация произвольного события и передача произвольных данных
await App.Frame.Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
});

// подписка на открытие боковой панели
const sidepanelOpened = new App.Frame.Event({
  target: {
    code: 'sidepanel_opened'
  }
});

await sidepanelOpened.on(async (info) => {
  console.log('Боковая панель открыта', info);

  // снятие подписки на открытие
  await sidepanelOpened.off();

  // и одиночная подписка на закрытие
  new App.Frame.Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Боковая панель закрыта', info);
  });
});

Опубликовано под лицензией MIT.