axios 多个请求loading管理

news/2024/10/16 20:21:54/

预期效果:多个请求并发时,所有请求完成后才关闭loading。

解决方案:增加一个 loadingCount 变量,用来计算请求的次数。

import Vue from 'vue'
import axios from 'axios'
const Loading = Vue.prototype.$loading;
const Message = Vue.prototype.$message;var loadingCount = 0;
var loadingService = nullfunction addLoading() {if (!loadingService) {loadingService = Loading?.({fullscreen: true,background: 'transparent',});}loadingCount++
}function isCloseLoading() {loadingCount--if (loadingCount == 0) {loadingService?.close();}
}axios.interceptors.request.use(config => {addLoading()return config
}, error => {loadingService?.close();loadingCount = 0Message.error('网络异常,请稍后再试')return Promise.reject(error)
})// 添加响应拦截器
axios.interceptors.response.use(response => {isCloseLoading()return response
}, error => {loadingService?.close();loadingCount = 0Message.error('网络异常,请稍后再试')return Promise.reject(error)
})

这个拦截器的功能是:

  • 每当发起一个请求,打开 loading,同时 loadingCount 加 1;

  • 每当一个请求结束, loadingCount 减 1,并判断 loadingCount 是否为 0,如果为 0,则关闭 loading;

    这样即可解决多个请求下有某个请求提前结束,导致 loading 关闭的问题。


http://www.ppmy.cn/news/799651.html

相关文章

阿里云轻量应用服务器和云服务器的区别

阿里云服务器ECS和轻量应用服务器有什么区别?云服务器ECS是明星级云服务器,轻量应用服务器可以理解为简化版的云服务器ECS,轻量适用于单机应用,云服务器ECS适用于集群类高可用高容灾应用,阿里云百科来详细说下阿里云轻…

一个闰字引发的事故 : 三星系统重启分析

背景 2020 年 5 月 23 号凌晨 1 点 30 左右, 大量三星手机用户的手机出现死机, 无限重启、进 Recovery 等问题, 并且操作不当会导致数据丢失, 并且上了知乎的热点, 售后点更是人满为患 知乎的部分回答中, 大家更是对三星的家属送上了亲切的问候, 甚至有的人已经将这次事故与 No…

Android 12 “Bug 连连”:除了一加、三星,谷歌自家手机都被“坑”了

相较于前面几个大版本,去年 10 月才问世的 Android 12 正式版稍显迟缓:2018 年 8 月 7 日谷歌发布 Android 9 正式版,之后 Android 10 正式版于 2019 年 9 月 3日正式发布,Android 11 同样也是 2020 年 9 月 8 日发布。 但即便晚…

Android系统关机和重启

一. 发送系统广播方式 Broadcast是Android的四大基本组件之中的一个。也就是我们常说的广播。Android系统本身就包括了很多广播,时时刻刻在监听着系统中注冊的每个广播并随时准备响应操作。 当中,就有关于关机或重新启动的广播:Intent.ACTIO…

android 重启手机的方法

android手机有很多的第三方固件,其中有不少固件中有reboot的功能,这个功能是如何实现的呢?我这里会做一个简单的示例。先看一个效果图吧! 如图在dialog中的最后一项是reboot功能。下面看看代码是怎么修改的: 文件路径&…

三星NOTE2 重启开机后3秒死机故障解决思路

前几天陆续安装了google一键安装套件,系统优化等各式软件。购买了wm1耳机到货,但安装软件后识别有点问题,手机进行了重启。 万万没有想到这么悲催的事情被我遇到了,重启后,进行操作,在开机进入界面3-5秒后死…

SpringBoot-定义实体类并且相关联

在Spring Boot中定义班级(Class)和学生(Student)的实体类,并建立班级的主键和学生的外键关联,可以按照以下方式进行定义。 Class(班级)实体类: import javax.persisten…

Qt QML入门

Qt QML模块为使用QML语言开发应用程序和库提供了一个框架。它定义并实现了语言和引擎基础结构,并提供了一个API,使应用程序开发人员能够使用自定义类型扩展QML语言,并将QML代码与JavaScript和C集成在一起。 Qt QML模块提供了QML API和c API。…