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

前端开发攻略---取消已经发出但是还未响应的网络请求

目录

注意:

1、Axios实现

2、Fetch实现

3、XHR实现


注意:

当请求被取消时,只会本地停止处理此次请求,服务器仍然可能已经接收到了并处理了该请求。开发时应当及时和后端进行友好沟通。

1、Axios实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button onclick="getData()">获取数据</button><button onclick="cancel()">取消请求</button><script src="https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.min.js"></script><script>// 创建一个取消令牌const CancelToken = axios.CancelToken// 用于存储取消函数let cancelFn = nullfunction getData() {// 发起请求axios.get('http://127.0.0.1:3000/data', {cancelToken: new CancelToken(function executor(c) {cancelFn = c // 保存取消函数}),}).then(response => {// 请求成功时处理响应console.log('拿到数据:', response.data)}).catch(error => {// 处理错误if (axios.isCancel(error)) {// 如果是取消请求的错误,输出相关信息console.log('请求已取消:', error.message)} else {// 处理其他类型的请求错误console.error('请求失败:', error)}})}function cancel() {// 调用取消函数,传入取消的原因cancelFn && cancelFn('取消请求') // 取消请求}</script></body>
</html>

2、Fetch实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button onclick="getData()">获取数据</button><button onclick="cancel()">取消请求</button><script>let controller = nullfunction getData() {// 创建一个AbortController实例controller = new AbortController()// 发起请求fetch('http://127.0.0.1:3000/data', { signal: controller.signal }).then(response => {if (!response.ok) {throw new Error('获取数据失败')}return response.json()}).then(data => {console.log(data)}).catch(error => {if (error.name === 'AbortError') {console.log('Fetch请求已取消')} else {console.error('Fetch请求错误:', error)}})}function cancel() {controller && controller.abort() // 取消请求}</script></body>
</html>

3、XHR实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button onclick="getData()">获取数据</button><button onclick="cancel()">取消请求</button><script>let xhr = nullfunction getData() {// 创建一个新的 XMLHttpRequest 对象xhr = new XMLHttpRequest()// 配置请求xhr.open('GET', 'http://127.0.0.1:3000/data', true)// 定义回调函数xhr.onload = function () {if (xhr.status >= 200 && xhr.status < 300) {console.log('响应结果:', xhr.responseText)} else {console.error('响应失败:', xhr.status)}}xhr.onerror = function () {console.error('请求失败')}// 发送请求xhr.send()}function cancel() {xhr && xhr.abort() // 取消请求}</script></body>
</html>

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

相关文章:

  • 韩信走马分油c++
  • 【Linux】Anaconda下载安装配置Pytorch安装配置(保姆级)
  • 渗透测试导论
  • 鸿蒙学习笔记--搭建开发环境及Hello World
  • 【ArcGIS风暴】ArcGIS字段计算器公式汇总
  • 探索秘境:如何使用智能体插件打造专属的小众旅游助手『小众旅游探险家』
  • 机械臂力控方法概述(一)
  • 1971. 寻找图中是否存在路径
  • FLINK SQL语法(1)
  • 【Fargo】1:基于libuv的udp收发程序
  • WebSocket介绍和入门案例
  • k8s集群版本升级
  • XML 和 SimpleXML 简介
  • MySQL 中 LIKE 语句的 `%` 和 `_` 以及 BLOB 和 TEXT 的详细解析和案例示范
  • git clone卡在Receiving objects
  • vue+ant 弹窗可以拖动
  • (42)MATLAB中使用fftshift绘制以零为中心的功率谱
  • Windows本地部署中文羊驼模型(Chinese-Alpaca-Pro-7B)(通俗易懂版)
  • Web3的挑战与机遇:技术发展的现状分析
  • LangGraph - Hierarchical Agent Teams
  • 2021-04-14 proteus中仿真时74HC245三态双向端口扩展输出
  • 解决UNSPSC商品分类的层级不足的方法
  • Pytest基于fixture的参数化及解决乱码问题
  • 使用excel.js(layui-excel)进行layui多级表头导出,根据单元格内容设置背景颜色,并将导出函数添加到toolbar
  • Mysql 5.7 安装与卸载(非常详细)
  • 030 elasticsearch查询、聚合
  • 前端工程启动工具
  • 游戏逆向基础-跳出游戏线程发包
  • 做海外网站需要准备什么
  • 通过OpenCV实现 Lucas-Kanade 算法