diff --git a/miniprogram/app.ts b/miniprogram/app.ts index 004bd19..dbd3ca1 100644 --- a/miniprogram/app.ts +++ b/miniprogram/app.ts @@ -11,7 +11,7 @@ App({ */ api: { nextId: 1, - pool: [] + pool: new Set() }, /** diff --git a/miniprogram/core/Api.ts b/miniprogram/core/Api.ts index 041df1b..a36fbe5 100644 --- a/miniprogram/core/Api.ts +++ b/miniprogram/core/Api.ts @@ -13,8 +13,9 @@ interface IAppAPIParam { /** * 请求池 + * 保存正在等待的 API 请求 */ - pool: API[]; + pool: Set>; } } @@ -160,7 +161,8 @@ class API extends EventEmitter extends EventEmitter) { + public param(data?: Partial):this { this.data = data; if (this.data === void 0) { Logger.log(`数据初始化异常: 没有输入 [data] 数据!`, LevelLogLabel.FatalLabel, this.LogLabel); - return; + return this; } for (let key in this.params) { @@ -226,12 +228,6 @@ class API extends EventEmitter = this.requestData = { url: API.baseUrl + this.url, @@ -274,6 +270,44 @@ class API extends EventEmitter(); + + // 获取标识符 + if (!this.id) { + this.id = app.api.nextId; + app.api.nextId ++; + } + + app.api.pool.add(this as any); + } + + /** + * 从 pool 中移除 + */ + protected removePool() { + let app = getApp(); + app.api.pool.delete(this as any); + } + + /** + * 运行 API + */ + public run() { + this.addPool(); } } diff --git a/miniprogram/core/EventEmitter.ts b/miniprogram/core/EventEmitter.ts index 34fb56d..b3fc67c 100644 --- a/miniprogram/core/EventEmitter.ts +++ b/miniprogram/core/EventEmitter.ts @@ -33,6 +33,14 @@ export class EventEmitter> { this.all = new Map(); } + public resetAll() { + this.all = new Map(); + } + + public reset(type: Key) { + this.all!.set(type, [] as EventHandlerList); + } + on(type: Key, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; diff --git a/miniprogram/pages/Timetable/TestCore.ts b/miniprogram/pages/Timetable/TestCore.ts index 2ebf306..45bc15a 100644 --- a/miniprogram/pages/Timetable/TestCore.ts +++ b/miniprogram/pages/Timetable/TestCore.ts @@ -28,8 +28,6 @@ implements Partial { } class TestApi extends API { - - public override key:string = "TestApi"; public override params: IParamSetting = { name: { @@ -44,7 +42,7 @@ implements Partial { public constructor() { super(); - this.initLabel(); + this.initLabel("TestApi"); this.emit("initData", {}) @@ -65,7 +63,7 @@ implements Partial { info: { data: "abc" } - }); + }).run(); console.log(api); } }