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: { api: {
nextId: 1, 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( this.LogLabel = new LogLabel(
`API:${ this.key }`, colorRadio(200, 120, 222) `API:${ this.key }`, colorRadio(200, 120, 222)
); );
@ -171,14 +173,14 @@ class API<I extends IAnyData, O extends IAnyData> extends EventEmitter<IAPIEvent
* data * data
* @param data API需要的全部数据 * @param data API需要的全部数据
*/ */
public param(data?: Partial<I>) { public param(data?: Partial<I>):this {
this.data = data; this.data = data;
if (this.data === void 0) { if (this.data === void 0) {
Logger.log(`数据初始化异常: 没有输入 [data] 数据!`, Logger.log(`数据初始化异常: 没有输入 [data] 数据!`,
LevelLogLabel.FatalLabel, this.LogLabel); LevelLogLabel.FatalLabel, this.LogLabel);
return; return this;
} }
for (let key in this.params) { 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); this.emit("initData", this.data);
if (this.data === void 0) {
Logger.log(`收集请求数据异常: 没有输入 [data] 数据!`,
LevelLogLabel.FatalLabel, this.LogLabel);
return;
}
// 重置请求数据 // 重置请求数据
const requestData:IWxRequestOption<O> = this.requestData = { const requestData:IWxRequestOption<O> = this.requestData = {
url: API.baseUrl + this.url, 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(); 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<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;
on(type: '*', handler: WildcardHandler<Events>): void; on(type: '*', handler: WildcardHandler<Events>): void;

View File

@ -28,8 +28,6 @@ implements Partial<ILifetime> {
} }
class TestApi extends API<ITestApiInput, {}> { class TestApi extends API<ITestApiInput, {}> {
public override key:string = "TestApi";
public override params: IParamSetting<ITestApiInput> = { public override params: IParamSetting<ITestApiInput> = {
name: { name: {
@ -44,7 +42,7 @@ implements Partial<ILifetime> {
public constructor() { public constructor() {
super(); super();
this.initLabel(); this.initLabel("TestApi");
this.emit("initData", {}) this.emit("initData", {})
@ -65,7 +63,7 @@ implements Partial<ILifetime> {
info: { info: {
data: "abc" data: "abc"
} }
}); }).run();
console.log(api); console.log(api);
} }
} }