Add API Module! #13

Merged
MrKBear merged 2 commits from dev-mrkbear into master 2021-12-31 11:24:28 +08:00
4 changed files with 55 additions and 15 deletions
Showing only changes of commit af68984caa - Show all commits

View File

@ -11,7 +11,7 @@ App<IAppAPIParam>({
*/
api: {
nextId: 1,
pool: []
pool: new Set()
},
/**

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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);
}
}