AbortController Web API 学习

2024-05-10 12:44
文章标签 学习 web api abortcontroller

本文主要是介绍AbortController Web API 学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概念:        

        AbortController是一个用于控制和取消异步操作的 Web API。它允许在需要时中止正在进行的异步操作,比如网络请求或定时器。通过 AbortController,可以发送一个中止信号来取消异步操作,并在需要时清理资源。

        其中当调用 abort() 方法取消异步操作时,会触发一个 AbortError 错误。需要在异步操作的 catch 块中处理这个错误,以避免未捕获的异常

简单的示例:

        演示如何使用 AbortController 来取消一个 fetch请求

const controller = new AbortController();
const signal = controller.signal;fetch('https://api.example.com/data', { signal }).then(response => {if (response.ok) {return response.json();} else {throw new Error('Network response was not ok');}}).then(data => {console.log(data);}).catch(error => {if (error.name === 'AbortError') {console.log('Request aborted');} else {console.error('Error:', error.message);}});// 在需要时取消请求
controller.abort();

        在上面的示例中,我们首先创建了一个AbortController实例,并从中获取一个signal对象,然后将该signal对象传递给fetch请求的配置中。当需要取消请求时,调用 controller.abort()方法即可中止请求,并触发一个 AbortError错误。


特点:

  1. 取消异步操作AbortController 允许您发送一个中止信号来取消正在进行的异步操作,比如网络请求或定时器。
  2. 简单易用:使用 AbortController 非常简单,只需创建一个实例并调用 abort() 方法即可取消操作。
  3. 与Fetch API 集成AbortController 与 Fetch API 集成良好,可以将 AbortController 实例的信号对象传递给 fetch 请求的配置中,实现请求的取消。
  4. 多次使用:一个 AbortController 实例可以用于多个异步操作的取消,只需在需要时重复调用 abort() 方法。

应用场景: 

        这里主要说明其与EventSource的关系及结合使用。大家都知道EventSource只支持Get请求,但是如果想要Post请求,我们该如何实现呢?大家可以查看这篇博客查看相关情况:https://blog.csdn.net/qq_44327851/article/details/135181995 

简而言之,就是我们会引入@microsoft/fetch-event-source来解决上面所说的问题,但是在这里我还要强调一点(以上面的示例为例):

       调用 controller.abort()方法会关闭与服务器的连接,但不会触发 EventSource 对象onclose()事件处理程序。相反,调用 controller.abort() 方法会立即关闭连接,而不会触发任何事件处理程序。但是controller.abort() 方法会导致 EventSource 对象的readyState属性变为 CLOSED。当调用 controller.abort() 方法方法关闭连接时,readyState属性会从 OPEN变为 CLOSED,表示连接已经关闭。

这篇关于AbortController Web API 学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976474

相关文章

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.