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

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现