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);
  });
相关推荐
2601_9516152027 分钟前
网站模板 网站网页模板下载
前端·网络·html
酷炫码神1 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端·html·html5
AI源码1 小时前
鲜花商城(HTML 版)
前端·html
hiahiahia1232 小时前
Message 和对话
服务器·前端·数据库
溪语流沙2 小时前
【Web全栈进阶】Composition API与组件通信:props深入、emit、插槽
前端·css·vue.js
ZoeLandia2 小时前
TypeScript 03:泛型与工具类型
前端·typescript
code_Bo2 小时前
从策划到上线:我和 AI 一起做了个微信记账小程序
前端·ai编程·cursor
Shirley~~2 小时前
Three.js加载Gltf模型并播放动画
前端·3d
Data analyse4562 小时前
Session超时与浏览器休眠的计时校验
大数据·前端·数据库·数据分析
星始流年2 小时前
AI 时代,软件程序员未来 10—15 年的职业前景
前端·后端·ai编程