请求取消(多种)

XMLHttpRequest

XMLHttpRequest 可以使用 abort() 方法来实现请求取消。

  const xhr = new XMLHttpRequest();xhr.open('GET', 'http://localhost:3000/api/txt');xhr.timeout = 2;xhr.ontimeout = function () {xhr.abort();console.error('请求超时,已中断');};xhr.onload = function () {if (xhr.status === 200) {console.log(xhr.responseText);}}send.onclick = function () {xhr.send();}

请求取消

fetch

fetch 内部API并不能实现请求的取消,需要借助 AbortController来实现。

AbortController接口表示一个控制器对象,允许你根据需要中止一个或多个 Web 请求。

要完成请求取消,就必须要与异步请求进行通讯,使用AbortSignal对象可以完成与异步操作的通信。而 AbortController.signal会返回一个AbortSignal 对象实例,作为一个选项传递进入请求的选项对象中,就是作为请求第二参数对象的属性,这将 signal 和 controller 与 fetch 请求相关联,并且允许我们通过调用 AbortController.abort() 去中止它, AbortController.abort()方法可以中止一个尚未完成的异步操作。

  • 创建了一个AbortController对象
    在请求外部创建AbortController对象
 const controller = new AbortController();
  • 通过controller.signal获取对应的AbortSignal对象。
const signal = controller.signal
  • AbortSignal对象作为Fetch请求的signal选项传递给fetch函数
fetch('http://localhost:3000/api/txt',{signal // AbortSignal对象})
  • 调用controller.abort()方法,触发AbortSignal对象的abort事件,终止Fetch请求
 stop.addEventListener('click',()=>{// 终止请求controller.abort();})
  • 在请求被终止后,进入catch块,进行错误处理。
    需要注意的是,终止请求后,Fetch请求的Promise会被拒绝,并且会抛出一个AbortError错误。因此,在处理错误时,可以通过判断错误类型为AbortError来区分是否是请求被终止的情况。
catch(error => {// 处理错误if (error.name === 'AbortError'){// 中断请求alert('请求被终止')}else {console.error(error);}});

使用AbortControllerAbortSignal可以灵活地控制和终止Fetch请求,特别适用于需要及时取消请求的场景,如用户取消操作或超时处理。

中止请求

Axios

Axios本质还是 XMLHttpRequests

从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 取消请求:

const controller = new AbortController();
axios.get('/foo/bar', {signal: controller.signal
}).then(function(response) {//...
});
// 取消请求
controller.abort()

也可以用cancel token 取消一个请求。Axios 的 cancel token API 从 v0.22.0 开始已被弃用

具体可以查阅官网

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本之for循环

一、循环中的常见语句 1.1 echo 打印 -n :表示不换行输出-e :输出转义字符 \b :相当于退格键(backspace)\n :换行,相当于回车\f :换行,换行后的新行的开头连着上一行的行尾\t :插入…

编程用什么轴体比较好用:全面解析四种轴体的优劣与应用

编程用什么轴体比较好用:全面解析四种轴体的优劣与应用 在编程的世界里,选择一款合适的机械键盘轴体,不仅能提升工作效率,更能带来舒适的打字体验。然而,面对市场上琳琅满目的轴体类型,究竟该如何选择呢&a…

a+=1和a=a+1的区别

文章目录 a1 和a a1的区别一、实例代码二、代码解释三、总结 a1 和a a1的区别 一、实例代码 public class Test {public static void main(String[] args) {byte a 10; // a a 1; // a (byte) (a 1);a 1;System.out.println(a);} }上面的对变量a进行加一操作时&a…

[Linux安全运维] Nginx相关

Nginx相关 1. 概述 Nginx是一种Web服务器,其具有高并发、高负荷的能力,具有以下优点: 稳定、系统资源消耗少、占用内存较少。软件安装包小且定制化强。具有高并发能力,可处理30000-50000个请求。 Nginx作为静态页面的web服务器…

【《流畅的python》3.2-3.3节学习笔记】

目录 前言字典推导dict.setdefault总结 前言 本文为《流畅的python》的3.2-3.3节的学习笔记。 字典推导 DIAL_CODES [(86, China),(91, India),(1, United States),(62, Indonesia),(55, Brazil),(92, Pakistan),(880, Bangladesh),(234, Nigeria),(7, Russia),(81, Japan),…

linux命令: ssh的使用

ssh隧道连通aws亚马逊云 ssh -D 7017 -i "/cygdrive/e/tbqapps2/cfg/*****.pem" adminec2-43-207-84-117.ap-northeast-1.compute.amazonaws.com ssh -o ServerAliveInterval30 -fN -D 8080 root39.105.185.11ssh -fN -D 7002 -i "D:\tbqapps2\cfg\******.pem&…

Oracle 23ai 中的重要新特性 VECTOR 数据类型

Oracle 23ai 中的 VECTOR 数据类型是 Oracle 数据库在 AI 领域的一个重要新特性,它允许用户以向量的形式存储数据,并在这些向量的基础上进行高效的搜索和分析。以下是对 Oracle 23ai VECTOR 数据类型的详细解析: 参考官方文档地址 https://d…

【Ubuntu-18.04.6 LTS (Bionic Beaver)】串口无法root登录解决方案

root用户无法再窗口登录 用户界面登录提示 soory that didnot work 解决方案 GDM 配置 /etc/gdm3/custom.conf 中增加或删除注释 [security] AllowRoottrue重启服务 service gdm restart确认 PAM 配置 GDM 使用 PAM 进行认证,可能 PAM 配置中限制了 root 登录…

GitHub网页打开慢的解决办法

有时候看资料絮叨github网页打不开,经百度后,发下下面的方法有效。 1)获取github官网ip 我们首先要获取github官网的ip地址,方法就是打开cmd,然后ping 找到github的地址:20.205.243.166 2)配…

体验升级!贵州“森林之城”携苏州金龙新V系谱写高端旅运新篇章

自今年出台文旅“四免一多一减”方案以来,贵州省围绕旅游资源,着力打造亮点,不断提升产品供给水平,旅游市场持续火爆。近日,贵州森林之城旅运公司从苏州金龙批量采购50座海格新V系豪华大巴,为贵州高端旅游市…

域名系统DNS的工作原理和服务搭建

文章目录 域名解析和DNSDNS概念 DNS服务工作原理递归查询迭代查询递归和迭代的区别DNS缓存 DNS服务器的安装whoisDNS软件bind DNS主服务器实现1.在主配置文件中定义区域2.定义区域解析库文件各种资源类型解析库记录定义项 3.配置识别区域库文件4.重启named服务启用DNS客户端缓存…

【EasyExcel】动态替换表头内容并应用样式

1.定义实体类 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ContentStyle; import com.alibaba.excel.metadata.BorderStyleEnum; import com.alibaba.excel.metadata.VerticalAlignmentEnum; import com.alibaba.excel.metadata.…

Java--static详解

1.static静态的意义,加在属性面前就为静态属性;加在方法面前就为静态方法 2.如图,定义了一个静态属性age,一个非静态属性score; 输出语句一共四句,其中第三句报错,由于静态和非静态的区别&…

微气象仪的工作原理

型号推荐:云境天合TH-WQX5】风力发电传感器在风力发电系统中起着至关重要的作用,它们能够实时监测和记录各种关键参数,为风力发电机组的控制提供数据支持,从而确保风力发电系统的安全、高效运行。以下是对风力发电传感器的详细解析…

程序员有哪些职位?

互联网行业中的岗位种类繁多、五花八门,学习一门技术后,重要的是找到合适的职业发展方向,程序员有哪些职业发展方向?一起来看看吧! 1.架构师 架构师需要程序员有强大的技术实力和深厚的技术积累。建筑师的成长需要经…

使用Docker制作python项目镜像

各docker桌面版本集合:如果提示新版本系统不支持,可下载旧版本 我也分享在下面。 链接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取码: g7ky –来自百度网盘超级会员v2的分享 来源参考:https://zhuanlan.zhihu.com/p/65…

one-hot编码案例

import jieba from tensorflow.keras.preprocessing.text import Tokenizer # 安装了新版本的tensorflow # from keras.preprocessing.text import Tokenizer # 系统里面没有按照新版本的tensorflow 直接使用keras# pytroch tensorflow1.xxxx (keras) # 导入用于对象保存与加…

uniapp 九宫格抽奖

<template><view class"container"><view class"navleft" click"navback"><image src"/static/cj/left.png" mode""></image></view><view class"navtitle">抽奖</…

SAP S4 销售组的定义和分配

spro-企业结构-定义-销售与分销-维护销售组 新增一个记录 spro-企业结构-分配-销售与分销-给销售办公室分配销售组

JavaScript-map方法

map可以遍历数组处理数据&#xff0c;并返回新的数组 语法&#xff1a; ​const arr[元素1&#xff0c;元素2&#xff0c;元素3] const newarrarr.map(function(数组的元素,数组的索引)){return 新元素 } const arr[blue,red,green]const newarrarr.map(function(ele,index){co…