Merge pull request 'Add API wait function, Update ReadMe file' (#15) from dev-mrkbear into master

Reviewed-on: http://git.mrkbear.com/MrKBear/mini-dlpu-v3/pulls/15
This commit is contained in:
MrKBear 2021-12-31 17:18:17 +08:00
commit 73563de980
3 changed files with 92 additions and 7 deletions

View File

@ -2,6 +2,22 @@
掌上教务处作为工业大学的社区开源项目自从2017年开始已有近5年岁月在无数同学的贡献之下为大家打造便捷的校园服务。
__*!!!注意!!!*__
请在主仓库提交代码,而非镜像仓库!
主仓库: http://git.mrkbear.com/MrKBear/mini-dlpu-v3
镜像仓库: https://github.com/Mr-k-bear/mini-dlpu-v3
## 目录
- [社区介绍](#小程序社区)
- [项目设计](#第三代小程序)
- [贡献规范](#社区贡献规范)
- [入门文档(等待撰写)](#第三代掌上教务处小程序)
- [设计架构(等待撰写)](#第三代掌上教务处小程序)
## 小程序社区
掌上教务处小程序诞生于2017年中旬此时微信小程序刚刚公测。
@ -48,12 +64,39 @@
3. 更好的拓展性,加入更多大家喜欢的功能
新功能:
1. 正在讨论设计,等待你的建议...
## 社区贡献规范
请仔细阅读!
### 项目贡献流程
请先邮件联系 ```mrkbear@mrkbear.com``` 获得 Gitea 平台账号
在仓库中创建自己的分支,分支命名规范为 ```dev-你的昵称```
在仓库中创建自己的分支,分支命名规范为 ```dev-你的昵称```,例如 ```dev-mrkbear```
克隆此储库,在本地 ```checkout``` 到自己的分支
克隆此储库,在本地 ```git checkout dev-你的昵称``` 到自己的分支,进行改动。
开发完成后 ```push``` 到自己的远程分支,并发起合并请求,等待 review
开发完成后 ```git push``` 到自己的远程分支,并发起合并请求到 ```master``` 分支
发起合并请求时,需要指派给 ```MrKBear``` 进行代码审核,审核通过后,代码将完成合并。
### 注意事项
1. ```master``` 分支处于保护状态,仅通过合并请求进行修改
2. 代码提交时,请使用清晰明确的 ```message```
正例: ```Add timetable page``` 反例: ```阿巴阿巴阿巴阿巴```
3. 请勿将任何个人隐私信息以任何方式,放入代码中
4. 为保证 CI/CD提交代码前必须保证编译可以通过
5. 一个文件不要超过 1000 行代码,尽量保证代码可读性
## 贡献者
@MrKBear (熊鲜森)

View File

@ -181,7 +181,7 @@ class API<I extends IAnyData, O extends IAnyData> extends Emitter<IAPIEvent<I, O
/**
*
*/
public initLabel(key: string) {
public initDebugLabel(key: string) {
this.key = key;
this.LogLabel = new LogLabel(
`API:${ this.key }`, colorRadio(200, 120, 222)
@ -467,6 +467,44 @@ class API<I extends IAnyData, O extends IAnyData> extends Emitter<IAPIEvent<I, O
return this;
}
/**
*
*/
public wait(): Promise<IRespondData<O>>;
public wait(callBack?: ICallBack<O>): this;
public wait(callBack?: ICallBack<O>): Promise<IRespondData<O>> | this {
// 存在 callback 使用传统回调
if (callBack) {
callBack.success && this.on("success", callBack.success);
callBack.fail && this.on("fail", callBack.fail);
callBack.complete && this.on("complete", callBack.complete);
return this;
}
// 不存在 callback 使用 Promise 对象
else {
return new Promise((r) => {
this.on("success", r);
this.on("fail", r);
});
}
}
}
/**
*
*/
type IRespondData<O extends IAnyData> = Partial<IAPIEvent<IAnyData, O>["success"]> & IAPIEvent<IAnyData, O>["fail"];
/**
*
*/
interface ICallBack<O extends IAnyData> {
success?: (data: IAPIEvent<{}, O>["success"]) => any;
fail?: (data: IAPIEvent<{}, O>["fail"]) => any;
complete?: (data: IAPIEvent<{}, O>["complete"]) => any;
}
/**
@ -515,4 +553,4 @@ enum HTTPMethod {
}
export default API;
export { API, IParamSetting, IAppAPIParam, HTTPMethod, RequestPolicy }
export { API, IParamSetting, IAppAPIParam, ICallBack, HTTPMethod, RequestPolicy }

View File

@ -42,7 +42,7 @@ implements Partial<ILifetime> {
public constructor() {
super();
this.initLabel("TestApi");
this.initDebugLabel("TestApi");
}
}
@ -53,7 +53,11 @@ implements Partial<ILifetime> {
info: {
data: "abc"
}
}).request();
}).request().wait({
success: (d) => console.log(d)
}).wait({
success: (d) => console.log(d)
});
}
}