js fetch请求中断的几种方式

news2025/1/31 2:57:16

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.coloradmin.cn/o/894355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习笔记|按键原理|消抖|按键点灯的4种模式|STC32G单片机视频开发教程(冲哥)|第七集:按键点灯

文章目录 第六集(下)课后练习解答:SOS求救灯光编写求救信号原理冲哥代码及解析分模块设计:math.h:math.c:while主程序部分 按键点灯(下)1.按键的原理Tips:按键消抖 2.按键的代码实现…

【java安全】Log4j反序列化漏洞

文章目录 【java安全】Log4j反序列化漏洞关于Apache Log4j漏洞成因CVE-2017-5645漏洞版本复现环境漏洞复现漏洞分析 CVE-2019-17571漏洞版本漏洞复现漏洞分析 参考 【java安全】Log4j反序列化漏洞 关于Apache Log4j Log4j是Apache的开源项目,可以实现对System.out…

【新书介绍】数字图像处理——基于OpenCV-Python

新书介绍:《数字图像处理——基于OpenCV-Python》 入手图像处理的小伙伴,应该先学数字图像处理课程,还是直接上手OpenCV呢?《数字图像处理——基于OpenCV-Python》的作者,也曾面临同样的困扰。作者的选择是一边学习理论…

《离散数学及其应用(原书第8版)》ISBN978-7-111-63687-8 第11章 11.1.3 树的性质 节 第664页的例9说明

《离散数学及其应用(原书第8版)》ISBN978-7-111-63687-8 第11章 11.1.3 树的性质 节 第664页的定理3的引申 定理3 带有i个内点的m叉树含有nmi1个顶点 见本人博文 内点定义不同的讨论 如果对于一个m叉正则树,即任意分支节点的儿子恰好有m个&am…

linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)

MySQL介绍及安装 一、MySQL概述 DB2 POSTGRE-SQL 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数…

成为项目经理需要哪些条件或证书?

首先,要成为一个项目经理,需要具备以下几种管理能力,这样公司才会信任你并把项目交给你。 1.人员开发能力 1.作为项目经理,需要创造一个学习的环境,让员工从工作中、从所经历或观察到的情况中获取知识。例如&#xf…

dB(分贝)定义及其应用(音量 dB dBA 计算 调整)

一、dB的诞生背景 dB是英文“decibel”的简写,其中,deci表示十分之一,Bel表示“贝”。Decibel,分贝就是十分之一贝。“贝”是“贝尔”的简称,是以杰出科学家Alexander Graham Bell的名字来命名的单位。贝尔在1876年获…

【3Ds Max】图形合并命令的简单使用

示例(将文字设置在球体上) 1. 首先这里创建一个球体和一个文本 2. 选中球体,在复合对象中点击图形合并按钮 点击“拾取图形”按钮,然后选中文本,此时可以看到球体上已经投射出文本 3. 接下来是一些常用参数的介绍 当…

必看!这篇破万字!国字头研究所,就业无敌!

我不进行报考院校的推荐,但我会做充足客观的数据分析,帮助大家进行报考前的千层博弈。这个择校分析专题会为大家结合:初试复试占比、复试录取规则(是否公平)、往年录取录取名单、招生人数、分数线、专业课难度等进行分…

fastapi发布web配置页面

fastapi发布web配置页面 FastAPI 是一个基于 Python 的快速 Web 开发框架,它提供了许多功能来简化 Web 开发过程。其中一个重要的功能是能够轻松地创建 API 文档页面。 在 FastAPI 中,可以使用 OpenAPI 和 Swagger 来创建 API 文档页面。下面是一个简单…

OLED透明屏与传统显示屏的区别:探索未来视觉体验的新里程碑

OLED透明屏作为一种新兴的显示技术,与传统显示屏相比,具有许多独特的特点和优势。 那么,在这篇文章中,尼伽便通过比较OLED透明屏和传统显示屏的区别,包括透明性、对比度、色彩表现力、节能环保等方面,为读…

聚观早报|京东称在技术投入没有止境;木蚁机器人完成B2轮融资

【聚观365】8月18日消息 京东零售CEO表示在技术上投入没有止境 木蚁机器人完成B2轮超亿元融资 耐能推出AI芯片KL730 三星电子泰勒晶圆厂首家客户是AI半导体厂商 韩国新能源汽车7月出口额同比大增36% 京东零售CEO表示在技术上投入没有止境 近日,京东零售CEO辛利…

​Kubernetes的演变:从etcd到分布式SQL的过渡

DevRel领域专家Denis Magda表示,他偶然发现了一篇解释如何用PostgreSQL无缝替换etcd的文章。该文章指出,Kine项目作为外部etcd端点,可以将Kubernetes etcd请求转换为底层关系数据库的SQL查询。 受到这种方法的启发,Magda决定进一步…

Linux Shell如果ping失败就重启网卡(详解)

直接上脚本 -------------------------------------------------------------------------- #vi /tmp/ping_check.sh #!/bin/bash IP="1.1.1.1" PacketLoss=`ping -c 4 -w 4 1.1.1.1 | grep packet loss | awk -F packet loss {print $1} | awk {print $NF}|se…

打开软件提示msvcr100.dll丢失的修复教程(解决方法)

电脑上出现了msvcr100.dll丢失的错误。这个错误导致无法正常运行一些使用C编写的程序。msvcr100.dll是Microsoft Visual C 2010 Redistributable安装程序提供的一个动态链接库文件。当一个程序需要使用msvcr100.dll中的函数或类时,它会在运行时动态链接到这个库文件…

前馈神经网络dropout实例

直接看代码。 (一)手动实现 import torch import torch.nn as nn import numpy as np import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt#下载MNIST手写数据集 mnist_train torchvision.datasets.MN…

代码随想录-数组篇

2-二分查找 方法一&#xff1a; 左闭右闭&#xff0c;[left, right] class Solution { public:int search(vector<int>& nums, int target) {//[left, right]int left 0;int right nums.size() - 1 ;while(left < right){int middle left ((right - left)…

git 回滚相关问题

原本用as自带的git执行回滚任务&#xff0c; 但是提交之后发现并没有成功&#xff0c; 后面通过命令行的方式重新回滚并且提交上去&#xff0c;就可以了 说明as的git还是有点小瑕疵&#xff0c;还是命令行最稳妥 相关博文&#xff1a; git代码回滚操作_imkaifan的博客-CSDN博…

WebDAV之π-Disk派盘 + 那样记账

那样记账是一款个人记账应用,致力于提供简单和轻量的记账体验。以下是该应用的一些特点和功能: 1. 快速记账:那样记账提供多种直接记账方式,让您能够快速记录收入和支出。 2. 自定义:您可以自定义收支分类,以及记账的时间和金额。根据个人需求,随时修改和调整记账信息…

项目经理到底要不要懂技术?

大家好&#xff0c;我是老原。 “项目经理要不要懂技术&#xff1f;” 这个问题的争议性一直挺大&#xff0c;就好比先有的鸡还是先有的蛋&#xff0c;各方说各方有理。 我见过只负责流程不需要懂技术的pm&#xff0c;也见过pm连软硬件设计都有review的。 一般总结来说就是…