【前端】中断请求的方式

news/2024/9/17 7:41:31/ 标签: 前端

一 使用 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/news/1522750.html

相关文章

Vue.js 组件化开发:父子组件通信与组件注册详解

Vue.js 组件化开发&#xff1a;父子组件通信与组件注册详解 简介&#xff1a; 在 Vue.js 的开发中&#xff0c;组件是构建应用的重要基础。掌握组件的创建与使用&#xff0c;尤其是父子组件的通信和组件的注册与命名&#xff0c;是开发中不可或缺的技能。本文将详细探讨这些内容…

【前端】CSS控制style样式失效

在CSS中&#xff0c;可以通过几种方式控制或禁用特定的style样式。 使用all: unset来重置所有可继承的属性&#xff0c;并清除所有的样式&#xff1a; .element {all: unset;} 使用inherit值来使属性获取其父元素的值&#xff1a; .element {color: inherit;font-size: inh…

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物&#xff0c;今天我们实现一下人物实现移动和跳起&#xff0c;依次点击&#xff0c;我们准备创建一个C#文件 创建好我们点击进去&#xff0c;就会跳转到我们的Vision Studio&#xff0c;然后输入这些代码 using UnityEngine;public class M…

Vue 使用接口返回的背景图片和拼图图片进行滑动拼图验证

一、背景 前两天发了一篇 vue-monoplasty-slide-verify 滑动验证码插件使用及踩坑_vue-monoplasty-slide-verify 引用后不显示-CSDN博客 这两天项目又需要通过接口校验&#xff0c;接口返回了背景图片和拼图图片&#xff0c;于是在网上找了一篇帖子&#xff0c;vue 图片滑动…

Apache Ignite 在处理大规模数据时有哪些优势和局限性?

Apache Ignite 在处理大规模数据时的优势和局限性可以从以下几个方面进行分析&#xff1a; 优势 高性能&#xff1a;Ignite 利用内存计算的优势&#xff0c;实现了极高的读写性能&#xff0c;通过分布式架构&#xff0c;它可以将数据分散到多个节点上&#xff0c;从而实现了并…

JavaEE-HTTPHTTPS

目录 HTTP协议 一、概念 二、http协议格式 http请求报文 http响应报文 URL格式 三、认识方法 四、认识报头 HTTP响应中的信息 HTTPS协议 对称加密 非对称加密 中间人攻击 解决中间人攻击 HTTP协议 一、概念 HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤…

2024华为OD机试真题-反射计数Python-C卷D卷-200分

2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 题目解析 代码 题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则…

分布式部署①

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 1. 需要部署的服务 Nacos 理论上,应…

仕考网:事业编面试全流程介绍

1.进入考场 工作人员会检查考生的身份证、准考证以及随身携带物品&#xff0c;可以带食物和水 2.进入候考室 进入候考室&#xff0c;工作人员会再次确认考生信息 3.抽签 考生到齐后&#xff0c;工作人员会组织考生抽签&#xff0c;登记抽签序号、信息确认、发放号码牌 4.…

【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)

【Android】使用和风天气API获取天气数据吧&#xff01;&#xff08;天气预报系列之一&#xff09; 古话说得好&#xff0c;要有天气预报&#xff0c;首先需要有天气&#xff0c;和预报。 今天给大家介绍一个好用的天气预报API&#xff1a;和风天气。以及webAPI的使用方法~&a…

React 应用中集成 Ace Editor

安装 React-Ace 首先&#xff0c;你需要安装 react-ace 和 ace-builds&#xff08;它包含 Ace Editor 的核心文件&#xff09;&#xff1a; pnpm install react-ace ace-builds用法&#xff1a; import React from react; import AceEditor from react-ace;// 引入你需要的 …

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日&#xff0c;中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话&#xff1a;悟空》正式上线&#xff0c;并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中&#xff0c;有人说他的成功在于对《西游记》为背景进行改编&#xff0c;对原著进行了分析…

es安装ik分词器

下载分词器 首先确定es对应的版本&#xff08;假设版本是7.10.0&#xff09;根据版本下载指定的分词器 开始安装 在线安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-…

如何在 Java 中实现线程安全的单例模式?

单例模式是一种常用的软件设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 在多线程环境下&#xff0c;确保单例模式的线程安全性是非常重要的&#xff0c;因为多个线程可能会同时尝试创建实例&#xff0c;导致实例不唯一的问题。 单例模式…

[数据集][目标检测]翻越栏杆行为检测数据集VOC+YOLO格式512张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;512 标注数量(xml文件个数)&#xff1a;512 标注数量(txt文件个数)&#xff1a;512 标注类别…

设计模式-装饰器代理观察者

3.7 装饰器模式&#xff08;代码见vs&#xff09; 装饰器又叫做包装模式&#xff0c;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种模式创建了一个装饰类&#xff0c;用来包装原有的类&#xff0c;并在保持类方法完整性的前提下&#xff0c;提供了额…

ssm微信小程序的英语学习激励系统论文源码调试讲解

2 关键技术介绍 2.1 SSM框架 开发信息管理系统的主流框架是SSM&#xff08;Spring Spring MVC MyBatis&#xff09;&#xff0c;SSM框架web层使用Spring MVC框架&#xff0c;使传输前后端数据变得简单&#xff1b;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框…

Java JVM 垃圾回收算法详解

Java 虚拟机&#xff08;JVM&#xff09;是运行 Java 应用程序的核心&#xff0c;它的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制是 JVM 中非常重要的一个部分。垃圾回收的主要任务是自动管理内存&#xff0c;回收那些不再被使用的对象&#xff0c;从而释放内…

网吧业务安全对抗(有源码)

网吧业务竞争激烈&#xff0c;网吧都会有以下系统软件。 无盘: 无盘是指没有硬盘。好处是统一维护管理和节约成本。本人研究无盘好几年&#xff0c;后面会专门发帖介绍。 计费: 是指收费系统。 营销软件: 包括销售饮品、‌零食和向客户发送电子邮件营销和短信营销等。产品如…

Redis配置

redis配置管理 可以直接打开配置文件进行查看和修改&#xff0c;也可以通过config命令来进行查看和修改。 配置文件位置 Linux中默认在/etc/redis/redis.conf。Windows 中默认在安装目录下&#xff0c;名为 redis.windows.conf。 查看redis配置 使用redis-cli连接redis后&…