axios请求超时自动重新请求
2019-03-09 16:19
896 查看
版权声明:作者:shenroom 来源:CSDN 版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_41772754/article/details/88367039
有时候因项目需求,要在接口请求超时或者获取数据失败时,重新请求1次,或者更多次。具体的配置步骤和方法如下:
因为是要在请求超时或者获取数据失败时,进行重新请求设置,那么我们肯定是要在请求返回拦截器里面设置,
[code]import axios from "axios"; const Axios = axios.create({ // 下面两个属性,用来设置,请求失败或者超时,自动重新请求的次数和间隙时间 retry: 2, // 请求次数 retryInterval: 1000 // 求期间隙 ...... }); //请求前拦截 Axios.interceptors.request.use(config => { return config }, function(error) { return Promise.reject(error) } ); //请求后返回数据拦截 Axios.interceptors.response.use(res => { return res }, function axiosRetryInterceptor(res) { var config = res.config; //如果配置不存在或重试属性未设置,抛出promise错误 if (!config || !config.retry) return Promise.reject(res); //设置一个变量记录重新请求的次数 config.retryCount = config.retryCount || 0; // 检查重新请求的次数是否超过我们设定的请求次数 if (config.retryCount >= config.retry) { return Promise.reject(res); } //重新请求的次数自增 config.retryCount += 1; // 创建新的Promise来处理重新请求的间隙 var back = new Promise(function(resolve) { console.log("接口"+config.url+"请求超时,重新请求") setTimeout(function() { resolve(); }, config.retryInterval|| 1); }); //返回axios的实体,重试请求 return back.then(function() { return Axios(config); }); } ); export default Axios
相关文章推荐
- axios的超时重新请求
- jsp中自动重新发送请求刷新当前页面
- Retrofit Token过期自动刷新并重新请求接口
- 使用HttpURLConnection设置请求超时时间,请求超时时会导致自动重发。
- axios 请求超时处理
- vue+axios 开发环境与生产环境配置请求接口,本地开发和线上开发有多个请求地址怎么处理?上线后自动获取ip,不需改请求地址可运用多个项目中
- 设置HTTP请求超时自动重发
- 实现session超时后自动跳转到登陆页面(前台JS,JAVA,判断是否Ajax请求)
- Spring Security登录超时,angular ajax请求出错自动跳转至登录页(jQuery也适用)
- HttpWebRequest请求超时异常的处理方法(重新发送请求到成功为止)
- AsyncTask 任务请求超时自动返回
- 请求加密,响应数据解密,过期自动刷新并且重新请求接口
- Vue------用axios发送post请求自动set cookie
- iOS 对于下载请求超时重新下载的方法
- 详解Vue用axios发送post请求自动set cookie
- WCF----双工模式服务端回调客户端方法时无响应,“发送到 http://***/User.svc 的请求操作在配置的超时内未收到回复”
- eclipse不能自动将java文件编译成class文件,刷新(Refrelsh)和重新建立工程都不行。
- Android HTTP 请求超过超时时间未返回 报错java.net.UnknownHostException: Unable to resolve host
- 为ServerXMLHTTP对象的HTTP请求设置超时时间
- 检测 方法超时,自动断开