Axios 取消请求

如果是react项目,推荐ahooks

如果是vue项目,推荐ahooks-vue

但如果用的是纯axios, 想要取消请求的话,可以这样

axios文档

javascript 复制代码
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);

  // 如果存在第一次请求的key
  if (reqMap.has(reqKey)) {
    const cancelToken = reqMap.get(reqKey);  
    cancelToken(reqKey);
    reqMap.delete(reqKey);
  }
}

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 执行删除重复请求
    delRepeatReq(config)
    
    // 得到key
    const reqKey= getReqKey(config);

    // 将key和cancel 存放到map
    config.cancelToken = new Axios.CancelToken((cancel) => {
      if (!reqMap.has(reqKey)) {
        // 第一次请求存放key
        reqMap.set(reqKey, cancel);
      }
    });

    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });
相关推荐
fengfeng N2 小时前
AxiosError: Network Error
前端·https·axios·跨域换源
StarPlatinum22 小时前
CSS实现一张简易的贺卡
前端·css
Stestack2 小时前
Python 给 Excel 写入数据的四种方法
前端·python·excel
SRC_BLUE_172 小时前
[Web 安全] PHP 反序列化漏洞 —— PHP 序列化 & 反序列化
前端·安全·web安全·php
IT猿手2 小时前
智能优化算法:雪橇犬优化算法(Sled Dog Optimizer,SDO)求解23个经典函数测试集,MATLAB
开发语言·前端·人工智能·算法·机器学习·matlab
windyrain3 小时前
基于 Ant Design Pro 实现表格分页与筛选参数的持久化
前端·javascript·react.js
懒人村杂货铺4 小时前
父子组件事件冒泡和捕获的顺序
前端·javascript·react.js
小刘不知道叫啥4 小时前
React 源码揭秘 | 更新队列
前端·react.js·前端框架
录大大i4 小时前
HTML之JavaScript DOM操作元素(1)
前端·javascript·html
huangkaihao4 小时前
无限滚动优化指南:从原理到实践
前端·面试·设计