UNPKG

@fallen-zero/use

Version:
75 lines (74 loc) 3.07 kB
/** 返回数据 */ export interface CancelablePromise<T> extends Promise<T> { cancel: () => void; } /** Promise 对象 */ export type IPromise<T> = CancelablePromise<T> | Promise<T>; export type LikePromise<T> = T | IPromise<T>; export type RequestResult<T> = T extends (...args: any[]) => IPromise<infer R> ? R : any; export interface RequestOptions { /** 状态判断 */ checkStatus?: (res: any) => boolean; /** 错误信息提示方法 */ showError?: (err: any) => void; /** 加载方法 */ showLoading?: (loading: boolean) => void; } export declare class CreateRequest { private config; constructor(config?: RequestOptions); requestApi: <T extends (...args: any[]) => IPromise<any>>(api: T, params: [...Parameters<T>], { immediate, success, fail, complate, checkStatus, showLoading, }?: { success?: ((res: RequestResult<T>) => LikePromise<void>) | undefined; fail?: ((err: any) => LikePromise<boolean | void>) | undefined; complate?: (() => LikePromise<void>) | undefined; immediate?: boolean | undefined; checkStatus?: ((res: RequestResult<T>) => boolean) | undefined; showLoading?: ((loading: boolean) => void) | undefined; }) => { /** 开始请求 */ run: () => Promise<void>; /** * 设置请求参数 * @param newParams 新的请求参数 * @param immediate 是否立即请求 */ setParams: (newParams: Parameters<T>, immediate?: boolean) => Promise<void>; /** 重置请求 */ reset: () => Promise<void>; /** 请求数据 */ data: import("vue").Ref<RequestResult<T> | undefined>; /** 请求错误信息 */ error: import("vue").Ref<any>; /** 请求加载状态 */ loading: import("vue").Ref<boolean>; /** 取消请求 */ cancel: (() => void) | undefined; }; } export declare const useRequest: <T extends (...args: any[]) => IPromise<any>>(api: T, params: [...Parameters<T>], { immediate, success, fail, complate, checkStatus, showLoading, }?: { success?: ((res: RequestResult<T>) => LikePromise<void>) | undefined; fail?: ((err: any) => LikePromise<boolean | void>) | undefined; complate?: (() => LikePromise<void>) | undefined; immediate?: boolean | undefined; checkStatus?: ((res: RequestResult<T>) => boolean) | undefined; showLoading?: ((loading: boolean) => void) | undefined; }) => { /** 开始请求 */ run: () => Promise<void>; /** * 设置请求参数 * @param newParams 新的请求参数 * @param immediate 是否立即请求 */ setParams: (newParams: Parameters<T>, immediate?: boolean) => Promise<void>; /** 重置请求 */ reset: () => Promise<void>; /** 请求数据 */ data: import("vue").Ref<RequestResult<T> | undefined>; /** 请求错误信息 */ error: import("vue").Ref<any>; /** 请求加载状态 */ loading: import("vue").Ref<boolean>; /** 取消请求 */ cancel: (() => void) | undefined; };