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

axios竟态问题

竟态问题

在我们日常开发经常遇到一些竟态问题

例子1

现象1

表格分页,如果设置请求loading,
先切换到分页第99页,迅速在又切换到第1页,最后列表显示的是第99页数据。

原因

由于第99页请求数据花费时间可能500ms,第1页数据只需要100ms,第1页数据请求比较快,第99页数据返回慢,所以第99页数据会覆盖第一页数据。

现象2

表单具有提交按钮,如果没有设置提交请求loading时,连续点击两次,就会触发两次表单提交

原因

请求没有做拦截,第一次请求没有结束,又能触发请求

axios中如何简单防止竟态问题

【注】这里只是简单做了防止重复点击

在axios 请求拦截器中可以设置 cancelToken

import axios from 'axios';

const cusAxiosFERD = axios.create({});
const cancelToken = axios.CancelToken;
const source = cancelToken.source();
const cacheRequest = {};
// 需要处理竞态问题的 接口
const urls = ['/xxx'];
cusAxiosFERD.interceptors.request.use( (config) => {
  
  const curUrl = config.url;
  if(urls.some(u=>curUrl.indexOf(u) > -1 ) && config.headers.isLimit){
    cacheRequest[curUrl] && cacheRequest[curUrl]();

    config.cancelToken = new axios.CancelToken(function executor(c) {
      cacheRequest[curUrl]  = c;
    })
  }
  return config;
}
 

http://www.kler.cn/a/374730.html

相关文章:

  • 0.96寸OLED显示屏详解
  • 差分矩阵(Difference Matrix)与累计和矩阵(Running Sum Matrix)的概念与应用:中英双语
  • 图像配准有哪些技术?
  • Chromium 中chrome.webRequest扩展接口定义c++
  • 272-1路万兆光纤SFP+和1路千兆网络 FMC子卡模块
  • dockerfile文档编写(3):构建失败后清理缓存(删除容器和镜像相关命令)
  • npm入门教程14:npm依赖管理
  • 在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流
  • 阿里巴巴独家的SpringCloud Alibaba学习笔记,面面俱到,太全了
  • 基于逻辑回归进行THUCNews文本分类
  • 软件测试基础知识总结
  • 测试不知道BUG如何定级和分类???
  • CICD学习笔记1
  • 在基于AWS EC2的云端k8s环境中 搭建开发基础设施
  • ZK范式系列之zkVM介绍(1)
  • 对镜像精简
  • 014:无人机遥控器操作
  • Jenkins You‘re using ‘Known hosts file‘,known_hosts file does not exist
  • 优化客户服务流程:提升效率与满意度的双赢策略
  • [java][基础]JSP
  • TensorFlow_T4 猴痘病识别
  • 超子物联网HAL库笔记:[汇总]
  • Linux中使用NGINX
  • 第9章 JDBC编程
  • Golang | Leetcode Golang题解之第517题超级洗衣机
  • #渗透测试#SRC漏洞挖掘# 信息收集-Shodan之搜索语法进阶