大纲

1.引入`import axios from 'axios'`
2.创建loding函数`Loading.service`,创建计数变量`requestCount = 0`,
3.创建axios实例`const service = axios.create()`
4.请求拦截器`service.interceptors.request.use()`
5.响应拦截器`service.interceptors.response()`
6.优化解决同步接口闪动

1.引入import axios from 'axios'及其他

import axios from 'axios';
import { MessageBox, Message, Loading } from 'element-ui';

2.创建loding函数Loading.service,添加技术变量

Loading = Loading.service({lock: true,text: '加载中……',spinner: 'el-icon-loading',background: 'rgba(0, 0, 0, 0.7)'
});
let requestCount = 0

3.创建axios实例const service = axios.create()

const service = axios.create({baseURL: config.BASE_API,timeout: 30000 // 请求超时
});

4.请求拦截器service.interceptors.request.use()

service.interceptors.request.use((config) => {requestCount++Loading()// 逻辑……return config}
}

5.响应拦截器service.interceptors.response()

service.interceptors.response.use((response) => {requestCount--if(requestCount === 0){Loading.close()}// 逻辑……return response.data}
}

6.优化解决同步接口闪动

说明:以上对于异步接口多接口已经可以有效解决了,但是很多时候在框架封装的时候我们还会遇到多个同步接口的调用情况,由于存在依赖关系就必须一个一个调用,导致出现loding闪现的效果,对于这种情况我们可以使用setTimeout延时解决。

实例:

/*** 思路:* 1.在loding关闭方法添加setTimeout延时处理* 2.在request中进行判断,存在setTimeout值,直接清除setTimeout达到清除操作
*/
let tservice.interceptors.request.use((config) => {requestCount++// 清除setTimeOutif (this.t) clearTimeout(this.t)// lodingLoading()// 逻辑……return config}
}service.interceptors.response.use((response) => {requestCount--if(requestCount === 0){this.t = setTimeOut(()=>{Loading.close()},500)}// 逻辑……return response.data}
}

解析:由上面的方法我们可以看到当要执行关闭loding时,我们添加延时。下一同步接口调用时就会判断是否存在延时,存在就直接清除延时使关闭方法不执行,以此类推,直到没有下一接口调用时,我们才执行关闭

结束。

Vue 拦截器 多接口调用 实现唯一loding效果 解决同步接口调用loding闪动相关推荐

  1. Vue 拦截器原理和详细使用

    拦截器原理和作用 首先拦截器在src/utils/request.js 文件中,拦截器分为请求拦截器和响应拦截器. 页面中的每一个请求都会经过请求拦截和响应拦截,所以一般在这个文件进行操作. 这一文件 ...

  2. .NET中间件以及VUE拦截器联合使用

    .NET中间件以及VUE拦截器联合使用 工作中遇见的问题,边学边弄,记录一下 Vue的UI库使用的是antvue 3.2.9版本的. 业务逻辑 特性 //特性public class ModelEsi ...

  3. Vue 拦截器对token过期处理

    最近在做的一个项目,需要每个http请求下 都要添加token,这样无疑是增加了工作量.而vue 拦截器interceptors正好可以解决我们的需求. 1.  在vueresource情况下 设置t ...

  4. vue拦截器刷新登陆页面_Vue + Spring Boot 项目实战(六):前端路由与登录拦截器-Go语言中文社区...

    前言 这一篇主要讲前端路由与登录拦截器的实现.放在一起讲是因为我在开发登录拦截器时因为这个路由的问题遇到了很多坑,花费了很长时间,网上的解决方案都不怎么靠谱,综合了好几种办法才最终成功,其实关于这个部 ...

  5. vue拦截器的使用(萌新怕不懂的看过来)

    由于我是第一次使用这个东西,我看到拦截器这个高大上的名字就感觉到害怕,所以做了这么多项目也怕接触这个东西,现在想到接口要进行处理,并且集中放置,所以利用了最近刚学的番茄时钟工作法,开了一个番茄,告诉自 ...

  6. vue拦截器实现统一token,并兼容IE9验证

    项目中使用vue搭建前端页面,并通过axios请求后台api接口,完成数据交互.如果验证口令token写在在每次的接口中,也是个不小的体力活,而且也不灵活.这里分享使用vue自带拦截器,给每次请求的头 ...

  7. struts2 在拦截器进行注入(依据Action是否实现自己定义接口)

    比如:经常在Action中都须要获取当前登录的User,就须要获取Session.然后从Session获取当前登录的User,由于这些步骤都是反复操作,能够想办法在拦截器中进行实现.能够自己定义一个接 ...

  8. Vue 拦截器的使用

    本文转载自: https://www.cnblogs.com/lhl66/p/8022823.html 作者:lhl66 转载请注明该声明. 拦截器 可以全局进行拦截器设置.拦截器在发送请求前或响应返 ...

  9. vue拦截器及地址解释

    一.获取地址信息 https://www.cnblogs.com/AiMuzi/p/6652825.html window.location 示例: http://www.home.com:8080/ ...

最新文章

  1. 阿里云首席架构师唐洪:拥抱开源的云端更具生命力
  2. 巧妙设置Android来方便管理Linux和Windows
  3. mormot解析天气预报JSON数据
  4. laravel打印sql语句_SQL语句为什么慢?索引为什么失效?
  5. 字节流复制文本文件【应用】
  6. 51nod1355-斐波那契的最小公倍数【min-max容斥】
  7. mysql 引擎 校对,MySQL 字符集和校对
  8. 2018-07-06笔记(LNMP配置)
  9. excel筛选排序从小到大_excel筛选怎么用教程 重复数据多个条件筛选功能教学
  10. Java单元测试-覆盖率分析报告自动生成
  11. JAVA Graphics2D种drawLine方法
  12. 2017 多校4 Dirt Ratio
  13. 推荐系统 | (3) 可解释推荐系统---身怀绝技,一招击中用户心理
  14. 关于手势(Gesture)
  15. find a way to escape题解
  16. 怎么查看服务器里的文件夹,如何查看远程服务器里面的文件夹
  17. Java微信扫码支付
  18. 数据治理方法论和实践小百科全书
  19. Python实用工具,PyQt5模块,Python实现不用声卡就能让电脑自己哼起歌
  20. x265源码分析 main函数 x265.cpp

热门文章

  1. 太棒了,Github 上面星标10K+ 的阿里巴巴社招面试感悟!(附海量面试复习资料)
  2. POJ 2818:密码
  3. 控制测量的基本概念总结
  4. barcode.jar处理条形码
  5. REMIX编译DeclarationError: Identifier already declared
  6. Latex在footnote或在bib中插入链接时出现波浪号~的解决方案
  7. 【WeNews】三胞债务重组方案出炉 650亿元金融债务如何化解
  8. 超级抠图:Super PhotoCut for Mac
  9. 鹏鹏seo第三课:长尾关键词的认识!
  10. [赛后总结]G2022 Regular Contest 04总结