Class AxiosTo<T>

axios通过get、post等方法获取数据后,返回Promise,此类等待并获取Promise的结果。

function isSuccess(x: MasAxiosResponseType) {
return x.data.code === 200;
}

const to = new AxiosTo(x => {
if (isSuccess(x)) return x.data.data
else if (x.data.info) ElMessage.error(x.data.info);
}, isSuccess);
to.showMessage = (message: string) => ElMessage.error(message);
// 如果有其他的返回类型,可以参考以下方法进行扩展,方便对接多个系统
type OtherType<T> = {
status: number,
response: T,
message: string,
};
type OtherAxiosResponse<T = unknown> = AxiosResponse<OtherType<T>>;
type TransOtherFunType<T extends AxiosResponse> = T extends OtherAxiosResponse<infer R> ? R : never
declare class OtherTo<T extends AxiosResponse = OtherAxiosResponse> {
showMessage: (message: string) => void;
constructor(getInfoFun: TransFunType<T>, isSuccessFun: IsSuccessType<T>);
async<R extends T>(promise: Promise<R>, silence?: boolean): Promise<ToResult<R, TransOtherFunType<R>>>;
}

function isSuccess(x: OtherAxiosResponse) {
return x.data.status === 200;
}

const to = new AxiosTo<OtherAxiosResponse>(x => {
if (isSuccess(x)) {
return x.data.response
}
},isSuccess) as OtherTo;
to.showMessage = (message: string) => ElMessage.error(message);

Type Parameters

Hierarchy (view full)

Constructors

Methods

  • 等待axios的get、post等方法返回Promise(promise参数),返回ToResult类,调用返回类的ToResult#getInfo方法进而获取解析值, 如果Promise被拒绝,错误不会抛出,可通过返回类的ToResult#err属性获取错误信息,另外根据silence参数,决定错误发生时是否显示错误。

    Type Parameters

    • R extends AxiosResponse<any, any>

    Parameters

    • promise: Promise<R>

      axios返回的的Promise

    • silence: boolean = false

      是否静默,默认值为false,如果为true,当请求失败时不会调用AxiosTo#showMessage方法显示错误信息

    Returns Promise<ToResult<R, TransMasFunType<R>>>

  • 当promise被拒绝时,显示错误信息的方法,默认使用console.error打印消息,一般在AxiosTo实例化后,重写此方法。

    Parameters

    • message: string

      错误消息

    Returns void