Skip to content

retry

接受一个返回Promise的函数func和重试次数maxRetries(默认为 3),返回一个调用该函数失败时重试的函数。

可选参数options设置重试的配置,具体看这里

Added in v0.0.1

Usage

ts
import { retry } from 'parsnip-kit'

let times = 0
const func = async (a: number, b: number) => {
  if (times < 3) {
    times++
    throw new Error(`Error ${times}`)
  }
  return a + b
}
const retried = retry(func)
retried(2, 3).then(res => {
  console.log(res)
  // { status: 'fulfilled', value: 5 }
})

API

Type Parameter

ArgTypeDescription
T函数func返回的Promisevalue类型

Arguments

ArgTypeOptionalDefaultDescription
func(...args: any[]) => Promise<T>falseundefined要重试的异步任务函数,必须返回一个Promise
maxRetriesnumbertrue3最大重试次数
optionsRetryOptionstrueundefined配置选项
options.delaynumbertrue300重试的初始延迟时间(毫秒)
options.delayFactornumbertrue2延迟时间的递增因子(每次重试时延迟时间乘以该值)
options.shouldRetry(error: any, attempts: number) => booleantrueundefined决定是否重试的回调函数
options.onSuccess(result: any, attempts: number) => anytrueundefined任务成功时的回调函数
options.onFailure(result: any, attempts: number) => anytrueundefined任务失败时的回调函数

Returns

Type
(...args: Parameters<typeof func>) => Promise<PromiseSettledResult<Awaited<T>>>

RetryOptions

retry函数的参数options的类型。

Added in v0.0.1

Source

typescript
export interface RetryOptions {
  delay?: number
  delayFactor?: number
  shouldRetry?: (error: any, attempts: number) => boolean
  onSuccess?: (result: any, attempts: number) => any
  onFailure?: (error: any, attempts: number) => any
}