前端连续发送同一个请求时,终止上一次请求

场景:几个tab页之间快速的切换(tab页只是参数不同,下边的数据渲染给同一个data)就会导致如果我在1,2,3,tab页按照顺序快速点击,发送三个请求,我想要展示的是3但是如果1或者2请求响应的时间比3长那么就会导致我最终渲染的数据是1的。

画个图理解一下:

比如X轴为请求,Y轴为每个请求响应的时间,这三个请求按顺序发送那么渲染的data会先为3然后为2最终变成了1,但是此时tab页是绑定的是3。

解决:

let controller = null;

async function fetchData(url, method, data) {
  // 如果存在上一个请求,则终止它
  if (controller) {
    controller.abort();
  }

  // 创建一个新的 AbortController
  controller = new AbortController();
  const signal = controller.signal;

  try {
    let options = { signal, method };
    if (method === 'POST' && data) {
      options.body = JSON.stringify(data);
      options.headers = { 'Content-Type': 'application/json' };
    }

    const response = await fetch(url, options);
    const responseData = await response.json();
    console.log(responseData);
  } catch (error) {
    console.error('Request aborted or network error', error);
  } finally {
    // 请求完成后将 controller 置为 null
    controller = null;
  }
}

// 调用 fetchData 函数
// GET 请求示例
fetchData('https://lutu.com', 'GET');

// POST 请求示例
const postData = { key: 'value' };
fetchData('https://lutu.com', 'POST', postData);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/625316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超简洁的todolist工具,电脑桌面高效计划管理软件

对于上班族来说,在电脑上使用一款高效计划管理软件至关重要。这样的工具不仅能帮助我们清晰地规划和追踪工作任务,还能有效提高工作效率,减少遗漏和延误。例如,当我们面临多个项目并行时,通过管理软件可以一目了然地查…

web入门练手案例(二)

下面是一下web入门案例和实现的代码,带有部分注释,倘若代码中有任何问题或疑问,欢迎留言交流~ 数字变色Logo 案例描述 “Logo”是“商标”的英文说法,是企业最基本的视觉识别形象,通过商标的推广可以让消费者了解企…

【考研数学】强化阶段,张宇《1000题》正确率达到多少算合格?

首次正确率在60%以上就算是合格! 张宇老师的1000题真挺难的,所以如果第一次做正确率不高,不要太焦虑,1000题不管是难度,综合度还是计算量,都比其他的题集高一截。 大家真实的做题情况下,如果正…

OmniDrive:具有 3D 感知推理和规划功能的自动驾驶整体 LLM-智体框架

24年5月北理工、Nvidia和华中科大的论文“OmniDrive:A Holistic LLM-Agent Framework for Autonomous Driving with 3D Perception Reasoning and Planning”。 多模态大语言模型(MLLMs)的进展导致了对基于LLM的自动驾驶的兴趣不断增长&…

Lumina-T2X 一个使用 DiT 架构的内容生成模型,可通过文本生成图像、视频、多视角 3D 对象和音频剪辑。

Lumina-T2X 是一个新的内容生成系列模型,统一使用 DiT 架构。通过文本生成图像、视频、多视角 3D 对象和音频剪辑。 可以在大幅提高生成质量的前提下大幅减少训练成本,而且同一个架构支持不同的内容生成。图像质量相当不错。 由 50 亿参数的 Flag-DiT …

零样本身份保持:ID-Animator引领个性化视频生成技术新前沿

在最新的研究进展中,由Xuanhua He及其团队提出的ID-Animator技术,为个性化视频生成领域带来了突破性的创新。这项技术的核心在于其零样本(zero-shot)人物视频生成方法,它允许研究者和开发者根据单一的参考面部图像生成…

人工神经网络(科普)

人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程…

Python 全栈体系【四阶】(四十二)

第五章 深度学习 九、图像分割 3. 常用模型 3.2 U-Net(2015) 生物医学分割是图像分割重要的应用领域。U-Net是2015年发表的用于生物医学图像分割的模型,该模型简单、高效、容易理解、容易定制,能在相对较小的数据集上实现学习…

利用KMeans进行遥感NDWI进行聚类分割

(1)解释 KMeans算法是一种非监督式的聚类算法,于1967年由J. MacQueen提出,聚类的依靠是欧式距离,其核心思想就是将样本划分为几个类别,类里面的数据与类中心的距离最小。类的标签采用类里面样本的均值。 这…

第16节 实战:文件转shellcode

我最近做了一个关于shellcode入门和开发的专题课👩🏻‍💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考…

《告别重复:Spring AOP让你的代码花园绽放》

厌倦了在代码花园中重复种植相同的植物(代码)吗?Spring AOP将是你的园艺师,帮助你修剪和优化代码,让花园更加丰富多彩! 文章目录 面向切面编程(AOP)主题文章一. 引言1.1 引入面向切面…

添砖Java之路(其八)——继承,final关键字

继承: 意义:让类于类之间产生父类于子类的关系,子类可以直接使用父类中的非私有成员(包括方法与成员变量) 。 extends关键字就是定义声明父类。 格式:public class 子类 extends 父类。 对于基础的我就不赘述了,我…

汇舟问卷:做小生意也依然可以取得成功

冷门小生意之所以能够成功发财,主要是因为竞争相对较少。相较于那些已被大家知晓且看似热门的生意,冷门小生意的利润空间更多且风险更低。 冷门小生意常常具备低成本和高回报的特点。举个例子,与开设一家餐厅或者服装店相比,成立…

【源码】Spring Data JPA原理解析之Repository的自动注入(一)

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…

电脑没有网络连接怎么办?4招轻松完成网络连接!

“我的电脑开机后发现连接不上网络,尝试了很多次也不行,这是因为什么呢?有什么比较好的解决方法吗?” 当电脑无法连接到网络时,可能会给我们的工作和生活带来诸多不便。然而,大多数网络连接问题都可以通过一…

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放 C#实现 模型边数 长方体 棱锥 圆柱 棱柱 圆锥 实现功能 展开 折叠 颜色 边框颜色 旋转 缩放 大小 视图方向 项目获取: 项目获取:typora: typora/img (gitee.com) 备用项目获取链接1:yife…

Linux的进程间通信 管道 进程池

目录 前言 进程间通信的基本概念 管道 匿名管道 pipe函数 cfc 管道的四种情况 管道的五种特征 进程池 ProcessPool.cpp: Task.cpp: 前言 ubuntu系统的默认用户名不为root的解决方案(但是不建议):轻量应用服…

安卓悬浮窗----可移动的悬浮窗

目录 前言一、添加对悬浮窗功能的支持二、通过service实现悬浮窗2.1 窗口属性和标志2.2 窗口移动 三、完整代码 前言 记录一下基础的悬浮窗实现,分为几个重要的点进行阐述。 一、添加对悬浮窗功能的支持 app要实现悬浮窗功能,首先app要添加对悬浮窗功…

【瑞萨RA6M3】2. UART 实验

https://blog.csdn.net/qq_35181236/article/details/132789258 使用 uart9 配置 打印 void hal_entry(void) {/* TODO: add your own code here */fsp_err_t err;uint8_t c;/* 配置串口 */err g_uart9.p_api->open(g_uart9.p_ctrl, g_uart9.p_cfg);while (1){g_uart9.…

扫码枪与Input的火花

文章目录 前言一、需求:交互细节二、具体实现两个核心的函数:自动聚焦 三,扩展知识input 与 change的区别 前言 在浏览器扫描条形码获取条形的值,再操作对应的逻辑。这是比较常见的业务,这里记录实际操作。 其中PC端…