From fc6fee74b056d5ac271723223c1ec55a5f37066c Mon Sep 17 00:00:00 2001 From: MrKBear Date: Fri, 31 Dec 2021 16:26:57 +0800 Subject: [PATCH] Add api wait function --- miniprogram/core/Api.ts | 40 ++++++++++++++++++++++++- miniprogram/pages/Timetable/TestCore.ts | 6 +++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/miniprogram/core/Api.ts b/miniprogram/core/Api.ts index 1719382..d0027ef 100644 --- a/miniprogram/core/Api.ts +++ b/miniprogram/core/Api.ts @@ -467,6 +467,44 @@ class API extends Emitter>; + public wait(callBack?: ICallBack): this; + public wait(callBack?: ICallBack): Promise> | 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 = Partial["success"]> & IAPIEvent["fail"]; + +/** + * 回调对象 + */ +interface ICallBack { + 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 } \ No newline at end of file +export { API, IParamSetting, IAppAPIParam, ICallBack, HTTPMethod, RequestPolicy } \ No newline at end of file diff --git a/miniprogram/pages/Timetable/TestCore.ts b/miniprogram/pages/Timetable/TestCore.ts index f6ccae9..f405248 100644 --- a/miniprogram/pages/Timetable/TestCore.ts +++ b/miniprogram/pages/Timetable/TestCore.ts @@ -53,7 +53,11 @@ implements Partial { info: { data: "abc" } - }).request(); + }).request().wait({ + success: (d) => console.log(d) + }).wait({ + success: (d) => console.log(d) + }); } }