createRequest / RequestMethod
接口:RequestMethod
RequestMethod 是 createRequest 返回的方法类型。
类型声明
typescript
import type { DebouncedFunction } from 'es-toolkit'
export interface RequestMethod<
// 数据
TData = any,
// 方法参数
TParams extends any[] = any[],
TSerialized = TData,
// 格式化数据
TFormatData = TSerialized,
> {
/**
* 手动触发 service 执行。异常通过 onError 反馈,或者 await run(...).catch() 捕获
*/
run: (...args: TParams) => Promise<Undefinable<TFormatData>>
/**
* 与 run 用法一致,带防抖
*/
debounceRun: DebouncedFunction<
(...args: TParams) => Promise<Undefinable<TFormatData>>
>
/**
* 与 run 用法一致,带节流
*/
throttleRun: DebouncedFunction<
(...args: TParams) => Promise<Undefinable<TFormatData>>
>
/**
* 使用上次的 params,重新调用 run
*/
refresh: () => Promise<Undefinable<TFormatData>>
/**
* 手动取消当前正在进行中的请求(伪取消)
*/
cancel: () => void
/**
* 突变,立即更改 data 数据
*/
mutate: (newData: TFormatData | ((oldData: TFormatData) => TFormatData)) => void
/**
* 乐观更新,立即更改 data 数据并在背后发起请求
* 如果请求失败,自动还原到更新之前的数据
*/
optimisticUpdate: (newData: TFormatData | ((oldData: TFormatData) => TFormatData), params?: TParams) => void
}泛型
| 名称 | 默认值 | 继承 | 可选 | 描述 |
|---|---|---|---|---|
TData | any | 是 | 数据类型 | |
TParams | any[] | any[] | 是 | 函数入参类型 |
TSerialized | TData | 是 | 序列化后的数据类型 | |
TFormatData | TSerialized | 是 | 格式化数据后的类型 |
方法
run
手动触发 service 执行,参数会传递给 service。 异常通过 onError 反馈或者使用 run(...).catch() 进行反馈。
入参
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
...args | TParams | 请求参数 |
返回值
Promise<Undefinable<TFormatData>>
debounceRun
与 run 用法一致,带防抖功能
入参
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
...args | TParams | 请求参数 |
返回值
Promise<Undefinable<TFormatData>>
throttleRun
与 run 用法一致,带节流功能
入参
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
...args | TParams | 请求参数 |
返回值
Promise<Undefinable<TFormatData>>
refresh
使用上次的 params,重新调用 run
返回值
Promise<Undefinable<TFormatData>>
cancel
手动取消当前正在进行中的请求(伪取消)。
已发出的请求后台仍会接收到,该方法只是取消了 data 的赋值以及 loading 重置为 false。
返回值
void
mutate
突变,立即更改 data 数据。
入参
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
newData | TFormatData | ((oldData: TFormatData) => TFormatData) | 新数据 |
返回值
void
optimisticUpdate
乐观更新,立即更改 data 数据,并且自动在背后发起请求。
如果请求失败,自动还原到更新之前的数据。
入参
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
newData | TFormatData | ((oldData: TFormatData) => TFormatData) | 新数据 | |
params | TParams | 可选 | 入参 |
返回值
void
