因业务需求,需要请求多次同一接口,需要在请求接口时,取消上个未完成的接口请求
解决方案一:统一封装
1. 可以利用CancelToken工厂函数创建cancel token
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
解决方案二:单个接口处理
1、api处
import axios from 'axios';
//导出表格
export function DataExport(data, _this) {
return request({
url: 'data/export',
responseType: 'blob',
method: 'post',
data: data,
cancelToken: new axios.CancelToken((c) => {
_this.cancelFun = c
}),
})
}
2、vue调用处理
export default {
data() {
return {
cancelFun: null, //取消接口
};
},
methods: {
//运行接口
CatchExport(){
this.cancelCsv();
DataCatchExport(this.queryParams, this).then((res) => {
this.$message({
type: "success",
message: "导出成功!",
});
})
.catch((err) => {
console.log(err);
});
},
//取消接口
cancelCsv() {
if (typeof this.cancelFun === "function") {
this.cancelFun();
}
},
}
}
本文探讨了在JavaScript中使用axios库时如何优雅地处理多次接口请求间的取消,提供了两种解决方案:一是通过统一封装管理CancelToken,二是针对单个接口实现取消功能。实例展示了如何在Vue中应用这些技巧来确保请求的高效管理和错误处理。
4709

被折叠的 条评论
为什么被折叠?



