当前位置: 首页 > news >正文

Axios 取消请求

如果是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);

  // 如果存在第一次请求的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);
  });


相关文章:

  • 微软推出Office免费版,限制诸多,只能编辑不能保存到本地
  • Ubuntu搭建esp32环境 配置打开AT指令集 websocket功能
  • C++引用
  • 【Deepseek+Browser-Use搭建 Web UI自动化】
  • AWS SDK for Java 1.x 403问题解决方法和原因
  • 【学习笔记】Kubernetes
  • React加TypeScript最新部署完整版
  • 系统定时器SysTick
  • Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
  • 【前端进阶】07 http协议和前端开发有什么关系
  • springboot实现文件上传到华为云的obs
  • Android 12.0 第三方app接收不到开机广播问题的解决以及开机自启动功能实现一
  • Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)
  • 为什么一个ip地址可以用浏览器打开,但是不能ping通
  • 算法题训练 ——— NC313 两个数组的交集
  • vscode中使用PlatformIO创建工程加载慢
  • 优选算法大集合(待更新)
  • 25.2.25补题
  • freetype封装
  • Java进阶学习笔记95——网络编程
  • 天津个人专业做网站/首页排名优化公司
  • 潍坊做网站潍坊做网站/百度广告官网
  • 罗湖做网站运营乐云seo/集客营销软件官方网站
  • 网站管理是什么工作/合肥seo关键词排名
  • 抖音网络推广怎么做/网站推广优化的方法
  • 做视频资源网站有哪些难点/提升seo排名平台