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

[javascript]取消异步请求

使用AbortController取消异步请求,比如xmlHttpRequest/fetch发起的请求。

const controller = new AbortController();
const signal = controller.signal;fetch('https://api.example.com/data', { signal }).then(response => response.json()).then(data => console.log(data)).catch(err => {if (err.name === 'AbortError') {console.log('请求被取消');} else {console.error('其他错误', err);}});// 3 秒后取消请求
setTimeout(() => {controller.abort();
}, 3000);

同时abortController不仅仅只是用来取消异步请求,它还可以用来取消addEventListener事件监听,再也不需要通过removeEventListener来取消监听了,省的每次还得保留回调函数引用来移除监听器,直接一步到位使用abort取消

const controller = new AbortController();
const signal = controller.signal;document.addEventListener('click', () => {console.log('点击了页面');
}, { signal });// 5 秒后自动移除监听器
setTimeout(() => {controller.abort();console.log('事件监听器已取消');
}, 5000);

取消定时任务或者其他异步逻辑等

async function doSomething(signal) {await new Promise((resolve, reject) => {const id = setTimeout(resolve, 5000);signal.addEventListener('abort', () => {clearTimeout(id);reject(new DOMException('Aborted', 'AbortError'));});});
}

AbortController MDN

http://www.dtcms.com/a/181192.html

相关文章:

  • Linux——MySQL基础
  • SQL进阶:如何把字段中的键值对转为JSON格式?
  • C++进阶--红黑树的实现
  • 报错 <pcl/features/feature_evaluation/feature_evaluation_framework.h> 不存在的解决办法
  • 深入了解 Stable Diffusion:AI 图像生成的奥秘
  • Linux系统入门第十一章 --Shell编程之函数与数组
  • 影刀RPA开发-智能录制
  • Vulfocus靶场-文件上传-2
  • 提升编程效率的利器:Zed高性能多人协作代码编辑器
  • PCA降维
  • 操作系统导论——第27章 插叙:线程API
  • 单例模式的两种设计
  • 手动修改uart16550的FIFO深度?
  • 从0开始学习大模型--Day04--大模型的框架以及基本元素
  • 深入探索Laravel框架中的Blade模板引擎
  • C语言 第六章 结构体(2)
  • MySQL核心内容【持续更新中】
  • 简述Linux操作系统并安装配置Linux
  • 26考研——中央处理器_指令执行过程(5)
  • 【 SVG动态拼接】前端生成阻抗电路图
  • 仁合医疗核心产品:引领医疗科技新潮流
  • LLM量化方法:ZeroQuant、LLM.int8()、SmoothQuant、GPTQ、AWQ
  • CRC 循环冗余校验
  • Vue3 + Element Plus 动态表单实现
  • vscode离线安装python插件
  • git高效杀器——cz-customizable 搭配 commitlint
  • 抖音到店摸着京东外卖过河
  • 树初步 #1(插排串联 - 辽宁省2024CCPC)
  • 【八股消消乐】你在项目中如何优化垃圾回收机制?
  • 动态规划之背包问题:组合优化中的经典NP挑战