js
import axios from 'axios';
// Axios 的 CancelToken
const CancelToken = axios.CancelToken;
// 创建一个 Axios 实例
const instance = axios.create();
// 用于存储所有的 cancel 函数
const pendingRequests = new Set();
// 添加请求配置
instance.interceptors.request.use(config => {
// 为每个请求创建一个新的 cancelSource
const cancelSource = CancelToken.source();
pendingRequests.add(cancelSource.cancel);
config.cancelToken = cancelSource.token;
return config;
});
// 提供一个取消所有请求的方法
instance.cancelAll = () => {
pendingRequests.forEach(cancel => cancel());
pendingRequests.clear();
};
export default instance;
可以在你的应用中使用这个封装过的 Axios 实例,并通过调用 instance.cancelAll() 方法来取消所有未完成的请求。