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

前端取消请求

取消请求

发送一个异步请求获取数据,并在控制台中打印出返回结果。这里使用了 fetch 方法来发送请求,同时使用 AbortController 对象来实现请求的取消操作。

具体来说,代码中定义了一个 list 函数,该函数会创建一个 AbortController 对象,并将其传递给 fetch 方法的 signal 参数中,以便在需要取消请求时使用。在发送新的请求之前,会先检查上一次请求是否已经完成,如果没有完成,则会使用 AbortController 对象的 abort 方法来取消上一次请求。

图下面代码所示

在里面使用异常捕获,因为再多次发送请求时并取消请求会提示This operation was aborted

let controller;const list = async () => {controller && controller.abort();controller = new AbortController();try {const result = await fetch("http://129.211.12.48:8080/api/forum/loadArticle",{ signal: controller.signal }).then((resp) => resp.json());console.log(result);} catch (error) {console.log("取消了上一次请求");}
};list();
list();

请求取消只能在fetch中实现,在xhr中无法实现,如相关库axios也是基于xhr实现的无法请求取消

axios 取消请求

首先创建了一个 CancelToken 实例,然后将其传递给请求的配置对象中。如果需要取消请求,可以调用 cancel 方法,并传递一个取消请求的原因。在请求的 catch 方法中,可以检查错误对象是否是由于请求被取消而导致的,如果是,就可以根据需要进行处理。

需要注意的是,如果请求已经发送并且正在等待响应,那么取消请求将不起作用,因为请求已经在服务器上处理了

import axios from "axios";
​
// 创建 CancelToken 实例
const source = axios.CancelToken.source();
​
// 发送请求
axios.get("http://129.211.12.28:8080/api/forum/loadArticle", {cancelToken: source.token,}).then((response) => {console.log(response.data);}).catch((error) => {if (axios.isCancel(error)) {console.log("请求已取消:", error.message);} else {console.log("请求出错:", error.message);}});
​
// 取消请求
source.cancel("请求被用户取消");

http://www.lryc.cn/news/195995.html

相关文章:

  • 关于6轴球腕机械臂的肩部奇异描述纠正
  • Python —— hou.Node class
  • MATLAB——RBF、GRNN和PNN神经网络案例参考程序
  • E138: Can‘t write viminfo file
  • Compose Canvas基础(2) 图形转换
  • 【计算机网络笔记】分组交换中的报文交付时间计算例题
  • JVS-rules规则引擎,解决大数据风控的自动化决策利器
  • dvaJs在react 项目中的简单使用
  • 如何将las数据转换为osgb数据?
  • 创新与重塑,佛塑科技打造集团型 CRM 建设标杆
  • STM32CUBEMX_DMA串口空闲中断接收+接收发送缓冲区
  • 酸蚀刻对钛医药材料纳米形态表面特性及活化能的影响
  • iOS代码混淆工具推荐:IPA Guard详细介绍
  • Vue检测数据的原理
  • 队列的运行算法
  • KVM/qemu安装UOS 直接让输入用户密码
  • 画一条0.5px的线、设置小于12px的字体、解决 1px 问题
  • Unity中Shader的深度写入ZWrite
  • Jetson nano 系列之7—jetson 通过rtp将视频发给远程host
  • 有哪些值得推荐的优秀 HTMLCSS 网站前端设计的网络资源(博客、论坛)?
  • RTSP/Onvif安防视频平台EasyNVR级联至EasyNVS系统不显示通道,是什么原因?
  • 点云处理【三】(点云降采样)
  • GB/T 41510-2022 起重机械安全评估规范 通用要求 摘要
  • 【vr】【unity】白马VR课堂系列-VR开发核心基础05-主体设置-手柄对象的引入和设置
  • UE5发布Android屏幕适配实践(Blueprint)
  • Spanner: Google’s Globally Distributed Database
  • Java基础——了解进制和位运算
  • mybatisplus 自定义mapper加多表联查结合分页插件查询时出现缺失数据的问题
  • 陪诊系统|陪诊软件革新陪诊体验解决病患难题
  • [Tkinter 教程08] Canvas 图形绘制