axios取消请求

1.使用CancelToken:

TypeScript 复制代码
class RequestHttp {
	service: AxiosInstance;
	public constructor(config: AxiosRequestConfig) {
		// 实例化axios
		this.service = axios.create(config);

		/**
		 * @description 请求拦截器
		 * 客户端发送请求 -> [请求拦截器] -> 服务器
		 */
		this.service.interceptors.request.use(
			(config: any) => {
				if (!getUrlParams("id")) {
					config["cancelToken"] = new axios.CancelToken(function (cancel) {
						cancel("当前URL中未携带id参数,请求已被取消");
					});
				}
				return config;
			},
			(error: AxiosError) => {
				return Promise.reject(error);
			}
		);
	}
}

export default new RequestHttp(config);

2.使用AbortController

javascript 复制代码
class RequestHttp {
	service: AxiosInstance;
	public constructor(config: AxiosRequestConfig) {
		// 实例化axios
		this.service = axios.create(config);

		/**
		 * @description 请求拦截器
		 * 客户端发送请求 -> [请求拦截器] -> 服务器
		 */
		this.service.interceptors.request.use(
			(config: any) => {
				if (!getUrlParams("id")) {
					const abortController = new AbortController();
					config.signal = abortController.signal;
					abortController.abort("当前URL中未携带id参数,请求已被取消");
				}
				return config;
			},
			(error: AxiosError) => {
				return Promise.reject(error);
			}
		);
	}
}

export default new RequestHttp(config);
相关推荐
carterwu4 分钟前
各个大厂是怎么实现组件库和相应扩展的?基础组件、区块、页面
前端
Face5 分钟前
promise 规范应用
前端
Mintopia5 分钟前
Node.js 中 fs.readFile API 的使用详解
前端·javascript·node.js
Face7 分钟前
事件循环
前端·javascript
ONE_Gua9 分钟前
chromium魔改——navigator.webdriver 检测
前端·后端·爬虫
CodePencil9 分钟前
CSS专题之盒模型
前端·css
谦谦橘子9 分钟前
服务端渲染原理解析
前端·javascript·react.js
carterwu10 分钟前
umi+模块联邦-配置指南
前端
Mintopia10 分钟前
深入理解 Three.js 中的 PerspectiveCamera
前端·javascript·three.js
无名之逆16 分钟前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust