在工作中,我们基本会遇到请求超时,需要重新发起请求或者进行相应的处理
但是axios之中,并没有超时回调给你,所以这就需要你根据error
信息来进行判断
我们开始走流程把:
1、判断超时
,网上很多都是一模一样的,完全没有自己的见解,这里我不推荐这种方式,所以,我希望你看了之后,自己去理解使用方法和思维,写出自己的东西。
需要了解报错后的信息后再度 编写文章
思路
1、设置一种状态,若超时,状态设置为true,则一直重新请求
2、设置次数,若超时次数大于设置次数,则不再重新发起请求
方案2 已有成熟方案,百度即可
axios.defaults.sendSuscced = true // 初始化报错后的请求状态
axios.defaults.retryDelay = 10000; // 设置超时时间
//很多人使用了axios的Interceptors来做处理,这里就来写一下
//建立响应拦截器
axios.interceptors.response.use(res => {
//这里是正常流程走的,我们这里讲解的是超时处理,我就不多说了
}, error => {
根据传回来的错误信息`erroe`进行判断
意为:`error.code`
if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
console.log('根据你设置的timeout/真的请求超时 判断请求现在超时了,
你可以在这里加入超时的处理方案')
`这里我 的方案是,超时后再次请求,所以新建了一个promise`
var newHttp= new Promise(function (resolve){
resolve()
})
`newHttp实例执行完成后会再次执行`
// 返回一个promise实例,同时重新发起请求,config请求配置,包扩请求头和请求参数
return newHttp.then(function (){
return axios(config)
})
}
// 若不是超时,则返回未错误信息
return Promise.reject(error)
})