【前端】中断请求的方式

embedded/2024/9/25 17:10:08/

一 使用 Axios 和取消令牌

1.步骤:

  1. 初始化取消源,创建CancelToken
const source = axios.CancelToken.source();
  1. 传递cancelToken, 发起请求
axios.get('/api/data', {cancelToken: source.token
});
  1. 触发取消请求
source.cancel('操作被取消');
  1. 判断错误是否由于取消请求操作引起的
if (axios.isCancel(error)) {console.log('请求已被取消');
}

2.示例:

<template><button @click="fetchData">获取数据</button><button @click="cancelRequest">取消请求</button>
</template><script setup>
import axios from 'axios';
import { ref } from 'vue';// 1.1初始化取消源
const cancelSource = ref(null);
// 发起请求
function fetchData() {// 创建CancelTokencancelSource.value = axios.CancelToken.source();axios.get('https://example.com/api/data', {// 2.传递cancelToken, 发起请求cancelToken: cancelSource.value.token,}).then(response => {console.log('响应数据:', response.data);}).catch(error => {// 4.判断是否取消请求if (axios.isCancel(error)) {console.log('请求已取消');} else {console.error('请求失败:', error);}});
}
// 3.点击按钮触发取消请求
function cancelRequest() {if (cancelSource.value) {cancelSource.value.cancel('取消请求');}
}
</script>

注: 检查是否被取消
在请求的 catch 函数中,通过 axios.isCancel(error) 检查错误是否是由取消操作引起的。
这样就可以在 Vue 3 中手动中断一个请求,并且在取消请求时进行相应的处理。

二 使用 Fetch API 和 AbortController

1. AbortController

AbortController 是一种用于取消 Fetch API 请求的标准方法,也可以与 axios 结合使用来取消请求。

2.使用 AbortController 的基本步骤

// 1.创建 AbortController
const controller = new AbortController();
const signal = controller.signal;// 2.将信号传递给 fetch 请求
fetch('https://example.com/api/data', { signal }).then(response => response.json()).then(data => console.log(data)).catch(error => {if (error.name === 'AbortError') {console.log('请求已中断');} else {// 处理其他错误}});// 2.将信号传递给 axios 请求
axios.get('/api/data', {signal: signal
}).then(response => {// 处理响应
}).catch(error => {if (error.name === 'CanceledError') {console.log('请求被取消');} else {console.error('请求失败', error);}
});// 3.在某个时刻决定中断请求
controller.abort();

注: 确保 axios 版本支持 AbortController(建议使用最新版本)。
取消请求后,需要在 catch 中检查错误类型。

三 使用 abort()

abort() 方法用于取消正在进行的 AJAX 请求。
在这里插入图片描述

1. 使用XMLHttpRequest

var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/data');
xhr.send();// 取消请求
xhr.abort();

2.使用jQuery.ajax

var jqXHR = $.ajax({url: '/api/data',type: 'GET'
});// 取消请求
jqXHR.abort();

http://www.ppmy.cn/embedded/105734.html

相关文章

godot开发初体验

点击加号可以创建一个新的场景 点击其它节点可以添加节点 想对某个节点添加子节点可以右键这个节点,然后点击添加子节点 在左下角的文件系统中,可以右键某个场景,并将其设置为主场景,主场景作为程序的入口 点击项目->项目设置-> 输入映射,可以添加一个新的动作,在添加新动…

NVIDIA GPU atom.global指令Profing

NVIDIA GPU atom.global指令Profing 一.小结二.输出解释三.复现过程 本文对NVIDIA GPU atom.global指令Profing,并小结 一.小结 sm atom指令的执行能力为:112 inst/cycle,每条atom warp指令会产生32个request,即3584 request/cyclelts有18个slice,每个slice处理能力为 1 requ…

无人机反制:无线电侦测设备技术详解

无人机反制技术中的低空安全综合管理平台&#xff0c;作为守护低空安全的重要工具&#xff0c;集成了多种先进的技术手段和管理功能&#xff0c;实现了对无人机等低空飞行器的全方位、无死角监控与反制。以下是对该技术平台的详细解析&#xff1a; 一、技术架构与核心功能 低…

Android Audio基础——音频模式设置(十九)

在《音频属性设是置》中介绍使用 setParameters 设置音频属性时,就是以设置音频模式及为例进行讲解的,其实在 AudioManager 中同样存在一个接口用来设置音频模式的,这里我们就来看一下。 一、音频模式 1、基础介绍 音频模式对于控制不同场景下的音频输出是非常有用的。 模…

怎么检测电脑的RAM?丨什么是RAM?

RAM 是 Random Access Memory 的缩写&#xff0c;它是一个允许计算机短期存储数据以更快访问的组件。众所周知&#xff0c;操作系统、应用程序和各种个人文件都存储在硬盘驱动器中。 当 CPU 需要调用硬盘上的数据进行计算和运行时&#xff0c;CPU 会将数据传输到 RAM 中进行计…

docker Desktop报错 error pulling image configuration 处理

问题描述 在 docker 拉数据 出现以下错误 error pulling image configurarion&#xff1a; 这个问题 主要是 可能应该某些原因不能网络无法连上镜像 原因分析&#xff1a; 1。 2024年 5月以后 国内很多IP都 。。。懂的都懂&#xff0c;很多 VPN 也是。。。 懂的都懂&#x…

SQLite3 数据类型深入全面讲解

SQLite3&#xff0c;作为一款轻量级的数据库管理系统&#xff0c;在数据存储方面展现出了其独特的魅力。它不仅支持标准的SQL语法&#xff0c;还提供了丰富的数据类型供开发者选择。这些数据类型不仅涵盖了基本的数值和文本类型&#xff0c;还包括了日期时间、二进制数据等复杂…

xss-labs靶场全关通关

1、level-1 1、输入&#xff0c;发现会将我们输入的内容显示&#xff1a; 2、若未做任何过滤就进行输出&#xff0c;那我们就可以嵌入js代码&#xff0c;执行js脚本&#xff1a; 输入&#xff1a;<script>alert(111)</script> <script></script>&…