当前位置: 首页 > news >正文

vue+element-ui给全局请求设置一个loading样式

 老项目后台管理,要在每个页面请求的时候都添加一个loading,为了统一和防止一个页面多次请求页面出现闪烁的情况同意在request.js中添加了一个全局loading。

想要的效果:

1.在请求的时候创建一个loading样式,请求结束是关闭。

2.loading出现后设置一个最短时间,防止请求立马响应回来,页面闪烁一下。多个请求时不添加多个loading效果。

//引入loading
import { Loading } from "element-ui";
//引入公共方法(防抖函数)
import { common } from "@/assets/js/common";// 全局loading相关代码
let loading; //定义loading变量
//创建loading
function startLoading() {loading = Loading.service({lock: true,text: "拼命加载中",spinner: "el-icon-loading",});// loading最少显示时间(为了防止当请求立马响应页面会闪一下的情况)return new Promise((resolve) => {setTimeout(() => {resolve();}, 300);});
}
//清除loading
async function endLoading() {await startLoading();loading.close();
}
//记录当前需要显示加载动画的请求数量
let needLoadingRequestCount = 0;
//使用防抖函数防止重复创建和清理loading的问题
const showFullScreenLoading = common.debounce(() => {if (needLoadingRequestCount === 0) {startLoading();}needLoadingRequestCount++;
}, 400);const tryHideFullScreenLoading = common.debounce(() => {if (needLoadingRequestCount <= 0) return;needLoadingRequestCount--;if (needLoadingRequestCount === 0) {endLoading();}
}, 400);// 请求拦截
request.interceptors.request.use((config) => {// ... 其他配置showFullScreenLoading();return config;},(error) => {// ... 其他配置showFullScreenLoading();return Promise.reject(error);}
);// 响应拦截
request.interceptors.response.use((res) => {tryHideFullScreenLoading();// ... 其他配置return res;},(err) => {tryHideFullScreenLoading();// ... 其他配置}
);

大概就这这么写的,当然最重要的还是根据自己的项目需求来做适当的改变。 

http://www.lryc.cn/news/111467.html

相关文章:

  • 传球游戏
  • 智能卡通用安全检测指南 思度文库
  • Maven设置阿里云路径(防止加载过慢)
  • JavaScript原型链污染漏洞复现与防范
  • 初识MySQL数据库之用户管理
  • JVM 类文件结构(class文件)
  • PAT乙题1011
  • 【并发专题】单例模式的线程安全(进阶理解篇)
  • 无涯教程-Perl - if...elsif...else语句函数
  • uniapp 实现滑动元素并下方有滚动条显示
  • QT充当客户端模拟浏览器等第三方客户端对https进行双向验证
  • 【JVM】 垃圾回收篇——自问自答(1)
  • Image Line FL Studio v21.0.3.3517 Producer版全插件版WIN免费下载完整版
  • PHP8条件控制语句-PHP8知识详解
  • 【PHP代码审计】ctfshow web入门 php特性 93-104
  • CSS元素的显示模式
  • Go strings.Title方法被废弃(Deprecated)
  • vuejs源码分析之全局API(vm.$off)
  • elasticSearch常见的面试题
  • 第一课-前提-Stable Diffusion 教程
  • Python 开发工具 Pycharm —— 使用技巧Lv.2
  • 代码随想录第39天 | 62. 不同路径、63.不同路径II
  • QMT入门—初识QMT
  • C 语言的 return 语句
  • 企业级Vue路由角色权限应该怎么做?
  • 3.2.0 版本预告!Apache DolphinScheduler API 增强相关功能
  • 测试工程师的工作
  • 压力测试与测试工具jmeter的介绍
  • 解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE)
  • 【openpcdet】dbinfo内的信息