支持异步全局事件

This commit is contained in:
dgflash
2025-11-16 10:30:04 +08:00
parent 0b3fc3aef2
commit f976379afc

View File

@@ -192,16 +192,44 @@ export class MessageManager {
*/
dispatchEvent(event: string, ...args: any) {
let list = this.events.get(event);
if (list != null) {
let eds: Array<EventData> = list.concat();
let length = eds.length;
for (let i = 0; i < length; i++) {
let eventBin = eds[i];
eventBin.listener.call(eventBin.object, event, ...args);
const ed = eds[i];
ed.listener.call(ed.object, event, ...args);
}
}
}
/**
* 触发全局事件,支持同步与异步处理
* @param event 事件名
* @param args 事件参数
* @example 事件响应示例
onTest(event: string, args: any): Promise<void> {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("异步事逻辑");
resolve();
}, 2000);
});
}
*/
dispatchEventAsync(event: string, ...args: any): Promise<void> {
return new Promise(async (resolve, reject) => {
let list = this.events.get(event);
if (list != null) {
let eds: Array<EventData> = list.concat();
let length = eds.length;
for (let i = 0; i < length; i++) {
const ed = eds[i];
await Promise.resolve(ed.listener.call(ed.object, event, ...args));
}
}
resolve();
});
}
}
export const message = new MessageManager();