Event
Event — класс для публикации событий и подписки на события платформы Аспро.Cloud из мини‑приложения. Допускается создание произвольного количества экземпляров для разных целевых событий.
import { Event } from '@aspro-cloud/miniapp-jssdk'Конструктор
Создает экземпляр Event с переданными параметрами
constructor(params: EventParams)| Параметр | Тип | Описание |
|---|---|---|
params | EventParams | Параметры создания события |
Свойства
events
Объект типа EventCallbacks<EventEventName> с обработчиком события onEmit
get events(): EventCallbacks
set events(value: EventCallbacks)target
Объект EventTarget, идентифицирующий целевое событие, задаётся через конструктор
target: EventTargetМетоды
destroy
Удаляет подписки и освобождает ресурсы
destroy(): voidemit
Публикует событие на платформе — все подписчики целевого события EventTarget получают данные EventInfo
static async emit(params: EventEmitParams): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
params | EventEmitParams | Параметры публикации события |
off
Снимает подписку, ранее установленную через on() или once()
async off(): Promise<any>on
Регистрирует обработчик события onEmit, срабатывает каждый раз при наступлении события на платформе с совпадающим target
async on(callback: EventCallback): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
callback | EventCallback | Обработчик события onEmit |
once
Регистрирует одноразовый обработчик события onEmit — снимается автоматически после первого срабатывания
async once(callback: EventCallback): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
callback | EventCallback | Обработчик события onEmit |
Пример
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)
})
})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);
});
});