Add API Module! #13
@ -11,7 +11,7 @@ App<IAppAPIParam>({
|
||||
*/
|
||||
api: {
|
||||
nextId: 1,
|
||||
pool: []
|
||||
pool: new Set()
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -13,8 +13,9 @@ interface IAppAPIParam {
|
||||
|
||||
/**
|
||||
* 请求池
|
||||
* 保存正在等待的 API 请求
|
||||
*/
|
||||
pool: API<IAnyData, IAnyData>[];
|
||||
pool: Set<API<IAnyData, IAnyData>>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,7 +161,8 @@ class API<I extends IAnyData, O extends IAnyData> extends EventEmitter<IAPIEvent
|
||||
/**
|
||||
* 初始化标签
|
||||
*/
|
||||
public initLabel() {
|
||||
public initLabel(key: string) {
|
||||
this.key = key;
|
||||
this.LogLabel = new LogLabel(
|
||||
`API:${ this.key }`, colorRadio(200, 120, 222)
|
||||
);
|
||||
@ -171,14 +173,14 @@ class API<I extends IAnyData, O extends IAnyData> extends EventEmitter<IAPIEvent
|
||||
* 注意:data 是不安全的,请传入数据副本
|
||||
* @param data API需要的全部数据
|
||||
*/
|
||||
public param(data?: Partial<I>) {
|
||||
public param(data?: Partial<I>):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<I extends IAnyData, O extends IAnyData> extends EventEmitter<IAPIEvent
|
||||
// 触发数据初始化事件
|
||||
this.emit("initData", this.data);
|
||||
|
||||
if (this.data === void 0) {
|
||||
Logger.log(`收集请求数据异常: 没有输入 [data] 数据!`,
|
||||
LevelLogLabel.FatalLabel, this.LogLabel);
|
||||
return;
|
||||
}
|
||||
|
||||
// 重置请求数据
|
||||
const requestData:IWxRequestOption<O> = this.requestData = {
|
||||
url: API.baseUrl + this.url,
|
||||
@ -274,6 +270,44 @@ class API<I extends IAnyData, O extends IAnyData> extends EventEmitter<IAPIEvent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求的唯一标识符
|
||||
*/
|
||||
protected id:number = 0;
|
||||
|
||||
/**
|
||||
* 将此请求加入到请求池
|
||||
*/
|
||||
protected addPool() {
|
||||
|
||||
let app = getApp<IAppAPIParam>();
|
||||
|
||||
// 获取标识符
|
||||
if (!this.id) {
|
||||
this.id = app.api.nextId;
|
||||
app.api.nextId ++;
|
||||
}
|
||||
|
||||
app.api.pool.add(this as any);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 pool 中移除
|
||||
*/
|
||||
protected removePool() {
|
||||
let app = getApp<IAppAPIParam>();
|
||||
app.api.pool.delete(this as any);
|
||||
}
|
||||
|
||||
/**
|
||||
* 运行 API
|
||||
*/
|
||||
public run() {
|
||||
this.addPool();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,6 +33,14 @@ export class EventEmitter<Events extends Record<EventType, unknown>> {
|
||||
this.all = new Map();
|
||||
}
|
||||
|
||||
public resetAll() {
|
||||
this.all = new Map();
|
||||
}
|
||||
|
||||
public reset<Key extends keyof Events>(type: Key) {
|
||||
this.all!.set(type, [] as EventHandlerList<Events[keyof Events]>);
|
||||
}
|
||||
|
||||
on<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;
|
||||
on(type: '*', handler: WildcardHandler<Events>): void;
|
||||
|
||||
|
@ -28,8 +28,6 @@ implements Partial<ILifetime> {
|
||||
}
|
||||
|
||||
class TestApi extends API<ITestApiInput, {}> {
|
||||
|
||||
public override key:string = "TestApi";
|
||||
|
||||
public override params: IParamSetting<ITestApiInput> = {
|
||||
name: {
|
||||
@ -44,7 +42,7 @@ implements Partial<ILifetime> {
|
||||
|
||||
public constructor() {
|
||||
super();
|
||||
this.initLabel();
|
||||
this.initLabel("TestApi");
|
||||
|
||||
this.emit("initData", {})
|
||||
|
||||
@ -65,7 +63,7 @@ implements Partial<ILifetime> {
|
||||
info: {
|
||||
data: "abc"
|
||||
}
|
||||
});
|
||||
}).run();
|
||||
console.log(api);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user