需求:调用后台接口时如果调用响应失败,重复请求10次,如果还是不成功则跳转到错误页面提示用户
http.js
import axios from 'axios' // 引入axios
import router from '@/router'
// 设置axios请求url
axios.defaults.baseURL = window.config.baseURL
// 设置重新请求次数
axios.defaults.retry = 10;
// 设置请求延时
axios.defaults.retryDelay = 1000;
// 响应拦截
axios.interceptors.response.use(res => {
console.log('response', res)
return res;
}, err => {
console.log('err', err)
var config = err.config
// 如果配置不存在或未设置重试选项,则返回错误信息
if (!config || !config.retry) return Promise.reject(err.response.data)
// 设置变量即跟踪重试次数
config.retryCount = config.retryCount || 0
console.log('config', config)
console.log('count', config.retryCount)
// 检查我们是否已经超过了总重试次数
if (config.retryCount > config.retry) {
console.log('count', config.retryCount)
router.push('/error')
// 返回错误信息
return Promise.reject(err.response.data)
}
// 重试次数加1
config.retryCount++
// 创建延时器等待发送重试请求
var backoff = new Promise((resolve) => {
setTimeout(() => {
console.log('创建延迟器')
resolve()
}, config.retryDelay || 1)
})
// 返回调用axios来重试请求
return backoff.then(() => {
console.log('重试请求')
return axios(config)
})
})
参考:请求超时VUE axios重新再次请求
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)