选对 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
});