【Vue3+Ts+Axios】处理Element Plus loading组件短时间内多个接口重复加载loading问题

15 篇文章 0 订阅
11 篇文章 0 订阅

在这里插入图片描述

Axios解决方案

import { ElLoading } from "element-plus";
// 其他自己的代码省略

// const instance = axios.create({
//   baseURL: "/api",
//   timeout: 10000, // 请求超时时间
// });

// 定义计数和定时器
let loadingTimer: NodeJS.Timeout | null = null;
let timerCount: number = 0;

// 请求拦截器
instance.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    timerCount++; // 每次请求++
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
// 响应拦截器
instance.interceptors.response.use(
  (response: AxiosResponse): any => {
    timerCount--; // 每次请求--
    return response.data;
  },
  (error) => {
    timerCount--;
    return Promise.reject(error);
  }
);

// 加载loading。其他请求方法自行写
const loadingInstance =
 ElLoading.service({
   lock: true,
   fullscreen: true,
 })


请求完毕的回调函数判断关闭loading、而不是请求完一次就关闭一次。关键解决代码:
if (loadingTimer) {
  clearTimeout(loadingTimer);
}
loadingTimer = setTimeout(() => {
  if (timerCount === 0) {
    loadingInstance?.close();
  }
}, 300); // 300毫秒同时请求的间隔关闭时间

其他解决方案自行研究,这里只做参考,大部分会封装在axios。

在这里插入图片描述
感谢你的阅读,如对你有帮助请收藏+关注!
只分享干货实战精品从不啰嗦!!!
如某处不对请留言评论,欢迎指正~
博主可收徒、常玩QQ飞车,可一起来玩玩鸭~

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值