跳转到内容

createRequest / RequestMethod

接口:RequestMethod

RequestMethodcreateRequest 返回的方法类型。

类型声明

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
}

泛型

名称默认值继承可选描述
TDataany数据类型
TParamsany[]any[]函数入参类型
TSerializedTData序列化后的数据类型
TFormatDataTSerialized格式化数据后的类型

方法

run

手动触发 service 执行,参数会传递给 service。 异常通过 onError 反馈或者使用 run(...).catch() 进行反馈。

入参

名称类型默认值描述
...argsTParams请求参数

返回值

Promise<Undefinable<TFormatData>>

debounceRun

run 用法一致,带防抖功能

入参

名称类型默认值描述
...argsTParams请求参数

返回值

Promise<Undefinable<TFormatData>>

throttleRun

run 用法一致,带节流功能

入参

名称类型默认值描述
...argsTParams请求参数

返回值

Promise<Undefinable<TFormatData>>

refresh

使用上次的 params,重新调用 run

返回值

Promise<Undefinable<TFormatData>>

cancel

手动取消当前正在进行中的请求(伪取消)。

已发出的请求后台仍会接收到,该方法只是取消了 data 的赋值以及 loading 重置为 false

返回值

void

mutate

突变,立即更改 data 数据。

入参

名称类型默认值描述
newDataTFormatData | ((oldData: TFormatData) => TFormatData)新数据

返回值

void

optimisticUpdate

乐观更新,立即更改 data 数据,并且自动在背后发起请求。

如果请求失败,自动还原到更新之前的数据。

入参

名称类型默认值描述
newDataTFormatData | ((oldData: TFormatData) => TFormatData)新数据
paramsTParams可选入参

返回值

void