mirror of
https://gitee.com/dgflash/oops-plugin-framework.git
synced 2026-05-13 09:14:50 +08:00
支持异步全局事件
This commit is contained in:
@@ -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();
|
||||
Reference in New Issue
Block a user