全局加载

## 全局加载

初始化全局loading状态

let loading = null

封装loading显示与隐藏的方法

// 显示加载
function showLoading() {
	if (requestCount === 0) {
		loding = Message({
			message: "加载中...",
			duration: 0
		})
	}
	
// 隐藏加载
function hideLoading() {
	if (loading) {
		loading.close()
	}
}	

分析:在什么样的情况下显示或隐藏loading
当用户发送请求时,
请求拦截器成功则 显示loading
请求拦截器失败则 隐藏loading

相应拦截器成功与失败皆设置为 隐藏loading

// 添加请求拦截器
axios.interceptors.request.use((config) => {
	console.log(config)
	let token = window.sessionStorage.getItem("token")
	if (config.token === true) {
		config.headers.token = token
	}
	if (config.loding === true) {
		// 显示加载
		showLoading()
	}
	// console.log(config)
	// 在发送请求之前做些什么
	return config;
}, (error) => {
	// 隐藏加载
	hideLoading()
	// 对请求错误做些什么
	return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use((response) => {
	console.log("响应拦截器 成功")
	// 隐藏加载
	hideLoading()
	// 对响应数据做点什么
	return response;
}, (err) => {
	// console.log("响应拦截器 失败")
	// console.log(err)

	if (err.response && err.response.data && err.response.data.errorCode) {
		// this.$message.error(err.response.data.msg);
		Vue.prototype.$message(err.response.data.msg);
	}
	// 隐藏加载
	hideLoading()
	// 对响应错误做点什么
	return Promise.reject(err);
});

解决loading同时显示多个问题

初始化变量requestCount用于计数

let requestCount = 0

通过请求次数决定是否执行显示加载与隐藏加载,如果requestCount值为0 则显示加载并且执行++

// 显示加载
function showLoading() {
//如果requestCount值为0 则显示加载
	if (requestCount === 0) {
		loding = Message({
			message: "加载中...",
			duration: 0
		})
	}
	//并且执行++
	requestCount++
}

如果requestCount大于0则自减,并且当loading为true,requestCount===0,则隐藏loading`

// 隐藏加载
function hideLoading() {
	if (requestCount > 0) {
		requestCount--
	}
	if (loading && requestCount === 0) {
		loading.close()
	}
}

如果设定通过请求传参的方式决定显示加载则如下

设置指定的属性loading并给与指定的值,通过请求传递参数触发

axios.post("/admin/logout",{},{
    token:true,
    loading:true
})

如果传递了参数并且值相等则显示加载

if(config.loading === true)(
// 显示加载
    showLoading()
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值