js fetch请求中断的几种方式

1、通过AbortController

这是官方标准手段,真正意义的阻止请求(不支持ie)

后端接口设置的两秒返回数据

function myFetch() {const controller = new AbortController();const signal = controller.signal;fetch('http://localhost:3000/aaa/bbb', {method: 'post',signal,headers: {'Content-Type': 'application/json'}}).then(res => res.json()).then(res => {console.log(res);return res;}).catch(e => {console.log(e);})// setTimeout(()=> {//     controller.abort();// }, 1000)
}

默认结果:
在这里插入图片描述
解开定时器后:
![在这里插入图片描述](https://img-blog.csdnimg.cn/49a12cad0df74597a88e34d1a1d027b4.png

在这里插入图片描述

2、模拟中断

通过promise,成功用resolve返回,失败用reject返回(浏览器上,请求依然会发出,并得到响应)
第一种方法:

function getData() {return new Promise((resolve, reject) => {myFetch().then(res => {resolve(res);});setTimeout(() => {reject({code: '500',msg: '请求失败'})}, 1000);})
}async function gotData() {try {const data = await getData();console.log(data);} catch (error) {console.log(error);}
}
gotData();

运行结果:
在这里插入图片描述
第二种方法:

function getData() {let myReject = null;let myPromise = new Promise((resolve, reject) => {myReject = reject;myFetch().then(res => {resolve(res);});});myPromise.abort = () => myReject({code: '500',msg: '请求失败'});return myPromise;
}async function gotData() {const result = getData();result.then(res => {console.log(res);}).catch(e => {console.log(e);})setTimeout(() => {result.abort();}, 1000);
}
gotData();

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

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

相关文章

【JVM】对String::intern()方法深入详解(JDK7及以上)

文章目录 1、什么是intern?2、经典例题解释例1例2例3 1、什么是intern? String::intern()是一个本地方法,它的作用是如果字符串常量池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象的引用&#…

分布式唯一ID实战

目录 一、UUID二、数据库方式1、数据库生成之简单方式2、数据库生成 - 多台机器和设置步长,解决性能问题3、Leaf-segment 方案实现4、双 buffer 优化5、Leaf高可用容灾 三、基于Redis实现分布式ID四、雪花算法1、雪花算法介绍2、 雪花算法生产环境架构:3…

【FAQ】调用视频汇聚平台EasyCVR的iframe地址,视频无法播放的原因排查

有用户反馈,在调用iframe地址后嵌入用户自己的前端页面,视频无法播放并且要求登录。 安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、视频云存储、视频集中…

【校招VIP】测试方案之测试用例分析

考点介绍 测试用例是测试岗面试和工作后的核心,在面试里对测试用例的分析是高频考查点。但是很多同学因为没有真实的商业产品需求,只能简单的看别人的用例学习,导致面试时被一个陌生问题卡住。 比如最简单的用户名密码输入,在商业…

元宇宙时代超高清视音频技术白皮书关于流媒体协议和媒体传输解读

流媒体协议 元宇宙业务场景对流媒体传输的实时性和互动性提出了更高的要求,这就需要在传统的 RTMP、SRT、 HLS 等基础上增加实时互动的支持。实时互动,指在远程条件下沟通、协作,可随时随地接入、实时地传递虚实融合的多维信息,身…

Blender增强现实3D模型制作指南【AR】

推荐:用 NSDT编辑器 快速搭建可编程3D场景 将静态和动画 3D 内容集成到移动增强现实 (AR) 体验中是增强用户沉浸感和参与度的高效方法。 然而,为 AR 创建 3D 对象可能相当艰巨,尤其是对于那些缺乏 3D 建模经验的人来说。 与添加视频或照片 AR…

python3 0基础学习----数据结构(基础+练习)

python 0基础学习笔记之数据结构 📚 几种常见数据结构列表 (List)1. 定义2. 实例:3. 列表中常用方法.append(要添加内容) 向列表末尾添加数据.extend(列表) 将可迭代对象逐个添加到列表中.insert(索引,插入内容) 向指定…

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

听GPT 讲Prometheus源代码--util

Prometheus的util目录包含了一些通用的工具模块,主要包含以下文件: buckets.go 这个文件定义了一些常用的指标采样值范围(Quantile buckets),如:0.001,0.01,0.05,0.5,0.9,0.95,0.99,0.999等。这些buckets常用于计算指标的分位数线。 regex.go 这个文件定义了一些正则表达式匹配…

[保研/考研机试] 杨辉三角形 西北工业大学复试上机题 C++实现

题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 输入n值,使用递归函数,求杨辉三角形中各个位置上的值。 输入描述: 一个大于等于2的整型数n 输出描述: 题目可能有多组不同的测试数据,对于每组输入数据, 按题目的要求输…

过来,我告诉你个秘密:送给程序员男友最好的礼物,快教你对象学习磁盘分区啦!小点声哈,别让其他人学会了!

[原文连接:来自给点知识](过来,我告诉你个秘密:送给程序员男友最好的礼物,快教你对象学习磁盘分区啦!小点声哈,别让其他人学会了!) 再唱不出那样的歌曲 听到都会红着脸躲避 虽然会经常忘了我依然爱着你 …

最新k8s集群搭建教程

本次安装在vmware虚拟机下开启3台2核2g的Ubuntu20.04系统 master:192.168.192.137 node1:192.168.192.136 node2:192.168.192.138 关闭防火墙 先查看防火墙状态,如果是关闭就不用管 ufw status关闭selinux,如果没有安…