Add API wait function, Update ReadMe file #15

Merged
MrKBear merged 6 commits from dev-mrkbear into master 2021-12-31 17:18:17 +08:00
2 changed files with 44 additions and 2 deletions
Showing only changes of commit fc6fee74b0 - Show all commits

View File

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

@ -53,7 +53,11 @@ implements Partial<ILifetime> {
info: {
data: "abc"
}
}).request();
}).request().wait({
success: (d) => console.log(d)
}).wait({
success: (d) => console.log(d)
});
}
}