选对 ajax 库,事半功倍~~~

axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
用它就对了

github

中文文档

axios-retry(axios 重试方案)

axios 的请求超时或失败的重试解决方案
基于 axios,若 axios 发送的请求失败,可根据配置自动重试

github

使用方法

  • 可以全局设置,也可以在请求时单独设置
  • shouldResetTimeout 的作用为每次重试重置超时,建议开启,否则控制台会变成 “机关枪”
  • 默认只有 “5xx错误” 和 “网络错误” 才会重发,可设置 retryCondition 自定义重发逻辑
import axios from 'axios'
import axiosRetry from 'axios-retry'

/** 全局设置 **/
axiosRetry(axios, {
  /** options **/
})

axios.get('/abc', {
  /** 单独设置 **/
  'axios-retry': {
    retries: 3
  }
})

promise-poller(重试、轮询)

基于 Promise 的重试方案
不限制于 ajax 请求,只要是异步方法都可以重试
可用于任何 http 库,十分优雅的即可实现

github

使用方法

// return Promise
promisePoller({
  /**
   *  返回 Promise 的任务函数
   *  若 reject
   *  直到 resolve
   **/
  taskFn,
  
  /** 重试请求间隔 **/
  interval: 500,
  
  /**
   *  失败重试次数
   *  这里设置为 Infinity 则可以实现无限重试
   **/
  retries: 10,
  
  /** 每次请求的超时 **/
  timeout: 1000,
  
  /** 整个任务的超时 **/
  masterTimeout: 5000
});