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);
  });
相关推荐
FelixBitSoul3 分钟前
彻底吃透 React Hook:它背后的执行模型到底是什么? 🚀
前端
Huanzhi_Lin10 分钟前
Nginx本地资源服务器-常用脚本
服务器·前端·nginx·batch·静态资源服务器
weixin1997010801610 分钟前
《好看视频商品详情页前端性能优化实战》
前端·性能优化·音视频
有意义11 分钟前
深入理解浏览器存储方案:从Cookie到JWT登录认证
前端·面试·浏览器
jiayong2312 分钟前
第 6 课:第二轮真实重构,拆出任务表格组件
前端·重构
jiayong2318 分钟前
第 4 课:怎么把一个大页面拆成多个组件
运维·服务器·前端
skywalk816321 分钟前
使用DuMate帮助创建 Python 3.9 环境并部署 Kotti CMS
前端·chrome
英俊潇洒美少年25 分钟前
Vue Hook 与 React Hook 全面解析:区别、用法、实战及避坑指南
前端·vue.js·react.js
weixin_7042660532 分钟前
项目总结一
java·前端·spring boot·后端·spring
Mintopia33 分钟前
接口设计为什么越改越乱:新手最容易踩的三个坑
前端