axios 之超时处理

在工作中,我们基本会遇到请求超时,需要重新发起请求或者进行相应的处理

但是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)

	})
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值