@prequest/error-retry

错误重试中间件

Usage no npm install needed!

<script type="module">
  import prequestErrorRetry from 'https://cdn.skypack.dev/@prequest/error-retry';
</script>

README

@prequest/error-retry

错误重试中间件

安装

npm install @prequest/error-retry

使用

类型注入

类型注入需要创建实例,通过类型注入,可以在写代码时,获得智能提示。

import { create, Request, Response } from '@prequest/xhr'
import errorRetryMiddleware, { ErrorRetryInject } from '@prequest/error-retry'

const prequest = create<ErrorRetryInject>()

统一控制

import { prequest, Request, Response } from '@prequest/xhr'
import errorRetryMiddleware from '@prequest/error-retry'

const middleware = errorRetryMiddleware<Request, Response>({
  // 错误重试次数
  retryCount: 2,

  // opt 为 Request 类型,通过该函数,你可以控制那些接口需要错误重试
  retryControl(opt, e) {
    const { method, path } = opt

    // 如果是具体某个错误,则不进行重试
    if (e.message === 'internal error') return false

    // api 路径不进行错误重试
    if (path === '/api') return false

    // 只有 get 方法才进行错误重试
    return method === 'GET'
  },
})

prequest.use(middleware)

单一控制

注册错误重试中间件后,每一个请求也可以单独配置错误请求次数、和错误请求控制

prequest('/api', {
  errorRetry: 1,
  retryControl(_, e) {
    if (e.message === '测试') {
      return false
    }
  },
})

配置项

Option Name Type Default Required Meaning
retryCount number 1 false 错误重试次数
retryControl (opt: RequestOpt, e: Error) => boolean (opt: RequestOpt) => opt.method === 'GET' false 重试策略,默认 get 请求会进行错误重试