@fallen-zero/use
Version:
75 lines (74 loc) • 3.07 kB
TypeScript
/** 返回数据 */
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;
};