当前位置: 首页 > 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

相关文章:

  • 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动态拼接】前端生成阻抗电路图
  • 乌克兰议会批准美乌矿产协议
  • 优化网络营商环境,上海严厉打击涉企网络谣言、黑灰产等违法犯罪
  • 上海市政府常务会议部署提升入境旅游公共服务水平,让国际友人“无障碍”畅游上海
  • 证券时报头版:巴菲特留给投资界的珍贵启示
  • 法国宣布投资1亿欧元吸引外国科研人员
  • 库里22分赢下抢七大战,火箭10年难破“火勇大战”的魔咒