vue2 3 axios 请求重试、取消请求、loading 串行并行等(分享)_vue await 报错取消loading

本文介绍了如何在 Vue2 项目中结合 Axios 实现请求的重试机制、取消请求、Loading 管理,包括并行请求的 Loading 控制和串行请求的处理。通过添加请求和响应拦截器,实现了在请求错误时的错误提示以及请求取消功能。同时展示了如何在请求中集成 Element UI 的 Loading 服务。
摘要由CSDN通过智能技术生成
return Promise.reject(error.response);

}
);


#### loading 串行、并行



> 
> 串行 loading 闪屏、并行 loading 提前关闭
> 
> 
> * 串行的情况是请求之间的依赖,请求 A 完成后立即开始请求 B,这样会导致 loading 闪屏
> * 并行是两个请求同时请求,请求 A 的时间为 5s,请求 B 的时间为 3s,因为 loading 都是同一个实例,会导致请求 B 时提前关闭 loading,关闭两秒后又请求到了新的数据
> 
> 
> 



import axios from “axios”;
import { Loading, Message } from ‘element-ui’;

const instance = axios.create({
baseURL: “http://localhost:5500”,
timeout: 30000,
});

// 处理并行
let loadingCount = 0;

// 处理串行
let loadingTimer = null;

function loadingClose() {
loadingCount–;
if (!loadingCount) {
// 延迟等待是否还有下一个请求
loadingTimer = setTimeout(() => {
loadingInstance.close();
loadingTimer = null;
}, 300);
}
}

function loadingOpen() {
loadingCount++;
// 如果有请求需要清除关闭
if (loadingTimer) {
clearTimeout(loadingTimer);
loadingTimer = null;
}
loadingInstance = Loading.service({
fullscreen: true,
text: “加载中…”,
background: “black”,
});
}

let loadingInstance = null;
// 添加请求拦截器
instance.interceptors.request.use(
(config) => {
loadingOpen();
return config;
},
(error) => {
Message.error(“请求错误:” 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值