如果是react项目,推荐ahooks
如果是vue项目,推荐ahooks-vue
但如果用的是纯axios, 想要取消请求的话,可以这样
axios文档
request.js// 存放请求的key和取消请求的方法
const reqMap = new Map()// 创建实例
const instance = axios.create({baseURL: 'https://some-domain.com/api/',timeout: 1000,headers: {'X-Custom-Header': 'foobar'}
});// 根据路劲和请求方式生成请求的key
const getReqKey = (config) => {let { url, method } = config;return [url, method].join("&");
}// 删除方法
const delRepeatReq = (config) => {const reqKey= getReqKey(config);// 如果存在第一次请求的keyif (reqMap.has(reqKey)) {const cancelToken = reqMap.get(reqKey); cancelToken(reqKey);reqMap.delete(reqKey);}
}// 添加请求拦截器
instance.interceptors.request.use(function (config) {// 执行删除重复请求delRepeatReq(config)// 得到keyconst reqKey= getReqKey(config);// 将key和cancel 存放到mapconfig.cancelToken = new Axios.CancelToken((cancel) => {if (!reqMap.has(reqKey)) {// 第一次请求存放keyreqMap.set(reqKey, cancel);}});return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});