From 31f8f884f1c0e65a4548a817f6823c7f430a6ef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 31 May 2024 19:09:03 +0800 Subject: [PATCH] refactor: NTEvent --- src/common/utils/EventTask.ts | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/common/utils/EventTask.ts b/src/common/utils/EventTask.ts index 5a498cae..b0bf0d76 100644 --- a/src/common/utils/EventTask.ts +++ b/src/common/utils/EventTask.ts @@ -1,21 +1,26 @@ +import { NodeIKernelMsgListener } from "@/core"; import { NodeIQQNTWrapperSession } from "@/core/wrapper"; + import { randomUUID } from "crypto"; // export enum NTEventMode { // Once = 1, // Twice = 2 // } + // export interface NTEventType Promise> { // EventName: string, // EventFunction: U, // ListenerName: string, // ListenerFunction: Function // } + // interface Internal_MapKey { // mode: NTEventMode, // timeout: number, // createtime: number, // func: Function // } + // export class NTEvent any, R = any> { // EventData: NTEventType; // EventTask: Map = new Map(); @@ -103,14 +108,17 @@ export class ListenerClassBase { } export class NTEventWrapper { - private ListenerMap: Map; - private WrapperSession: NodeIQQNTWrapperSession; + private ListenerMap: Map | undefined; + private WrapperSession: NodeIQQNTWrapperSession | undefined; private ListenerManger: Map = new Map(); - constructor({ ListenerMap, WrapperSession }: { ListenerMap: Map, WrapperSession: NodeIQQNTWrapperSession }) { + constructor() { + + } + init({ ListenerMap, WrapperSession }: { ListenerMap: Map, WrapperSession: NodeIQQNTWrapperSession }) { this.ListenerMap = ListenerMap; this.WrapperSession = WrapperSession; } - GetEvent any>(eventName: string) { + CreatEventFunction any>(eventName: string): T | undefined { // 将 eventName 'NodeIKernelProfileLikeService/GetTest' => 转换成 this.WrapperSession.getProfileLikeService().getTest let eventNameArr = eventName.split('/'); type eventType = { @@ -124,7 +132,7 @@ export class NTEventWrapper { //重新绑定this event = event.bind(services); if (event) { - return event; + return event as T; } return undefined; @@ -132,16 +140,27 @@ export class NTEventWrapper { } // 获取某个Listener - GetListener(listenerName: string, uniqueCode: string = "") { - let ListenerType = this.ListenerMap.get(listenerName); + CreatListenerFunction(listenerName: string, uniqueCode: string = ""): T { + let ListenerType = this.ListenerMap!.get(listenerName); let Listener = this.ListenerManger.get(listenerName + uniqueCode); if (!Listener && ListenerType) { Listener = new ListenerType(); this.ListenerManger.set(listenerName + uniqueCode, Listener); } - return Listener; + return Listener as T; } } +// 示例代码 快速创建事件 +// let NTEvent = new NTEventWrapper(); +// let TestEvent = NTEvent.CreatEventFunction<(force: boolean) => Promise>('NodeIKernelProfileLikeService/GetTest'); +// if (TestEvent) { +// TestEvent(true); +// } + +// 示例代码 快速创建监听Listener类 +// let NTEvent = new NTEventWrapper(); +// NTEvent.CreatListenerFunction('NodeIKernelMsgListener', 'core') + // 初步构想 // NTEventDispatch NTEvent NTEventWrapper