請求取消(多種)

XMLHttpRequest

XMLHttpRequest 可以使用 abort() 方法來實現請求取消。

  const xhr = new XMLHttpRequest();xhr.open('GET', 'http://localhost:3000/api/txt');xhr.timeout = 2;xhr.ontimeout = function () {xhr.abort();console.error('請求超時,已中斷');};xhr.onload = function () {if (xhr.status === 200) {console.log(xhr.responseText);}}send.onclick = function () {xhr.send();}

請求取消

fetch

fetch 內部API并不能實現請求的取消,需要借助 AbortController來實現。

AbortController接口表示一個控制器對象,允許你根據需要中止一個或多個 Web 請求。

要完成請求取消,就必須要與異步請求進行通訊,使用AbortSignal對象可以完成與異步操作的通信。而 AbortController.signal會返回一個AbortSignal 對象實例,作為一個選項傳遞進入請求的選項對象中,就是作為請求第二參數對象的屬性,這將 signal 和 controller 與 fetch 請求相關聯,并且允許我們通過調用 AbortController.abort() 去中止它, AbortController.abort()方法可以中止一個尚未完成的異步操作。

  • 創建了一個AbortController對象
    在請求外部創建AbortController對象
 const controller = new AbortController();
  • 通過controller.signal獲取對應的AbortSignal對象。
const signal = controller.signal
  • AbortSignal對象作為Fetch請求的signal選項傳遞給fetch函數
fetch('http://localhost:3000/api/txt',{signal // AbortSignal對象})
  • 調用controller.abort()方法,觸發AbortSignal對象的abort事件,終止Fetch請求
 stop.addEventListener('click',()=>{// 終止請求controller.abort();})
  • 在請求被終止后,進入catch塊,進行錯誤處理。
    需要注意的是,終止請求后,Fetch請求的Promise會被拒絕,并且會拋出一個AbortError錯誤。因此,在處理錯誤時,可以通過判斷錯誤類型為AbortError來區分是否是請求被終止的情況。
catch(error => {// 處理錯誤if (error.name === 'AbortError'){// 中斷請求alert('請求被終止')}else {console.error(error);}});

使用AbortControllerAbortSignal可以靈活地控制和終止Fetch請求,特別適用于需要及時取消請求的場景,如用戶取消操作或超時處理。

中止請求

Axios

Axios本質還是 XMLHttpRequests

從 v0.22.0 開始,Axios 支持以 fetch API 方式—— AbortController 取消請求:

const controller = new AbortController();
axios.get('/foo/bar', {signal: controller.signal
}).then(function(response) {//...
});
// 取消請求
controller.abort()

也可以用cancel token 取消一個請求。Axios 的 cancel token API 從 v0.22.0 開始已被棄用

具體可以查閱官網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44821.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

shell腳本之for循環

一、循環中的常見語句 1.1 echo 打印 -n :表示不換行輸出-e :輸出轉義字符 \b :相當于退格鍵(backspace)\n :換行,相當于回車\f :換行,換行后的新行的開頭連著上一行的行尾\t :插入…

編程用什么軸體比較好用:全面解析四種軸體的優劣與應用

編程用什么軸體比較好用:全面解析四種軸體的優劣與應用 在編程的世界里,選擇一款合適的機械鍵盤軸體,不僅能提升工作效率,更能帶來舒適的打字體驗。然而,面對市場上琳瑯滿目的軸體類型,究竟該如何選擇呢&a…

a+=1和a=a+1的區別

文章目錄 a1 和a a1的區別一、實例代碼二、代碼解釋三、總結 a1 和a a1的區別 一、實例代碼 public class Test {public static void main(String[] args) {byte a 10; // a a 1; // a (byte) (a 1);a 1;System.out.println(a);} }上面的對變量a進行加一操作時&a…

[Linux安全運維] Nginx相關

Nginx相關 1. 概述 Nginx是一種Web服務器,其具有高并發、高負荷的能力,具有以下優點: 穩定、系統資源消耗少、占用內存較少。軟件安裝包小且定制化強。具有高并發能力,可處理30000-50000個請求。 Nginx作為靜態頁面的web服務器…

【《流暢的python》3.2-3.3節學習筆記】

目錄 前言字典推導dict.setdefault總結 前言 本文為《流暢的python》的3.2-3.3節的學習筆記。 字典推導 DIAL_CODES [(86, China),(91, India),(1, United States),(62, Indonesia),(55, Brazil),(92, Pakistan),(880, Bangladesh),(234, Nigeria),(7, Russia),(81, Japan),…

linux命令: ssh的使用

ssh隧道連通aws亞馬遜云 ssh -D 7017 -i "/cygdrive/e/tbqapps2/cfg/*****.pem" adminec2-43-207-84-117.ap-northeast-1.compute.amazonaws.com ssh -o ServerAliveInterval30 -fN -D 8080 root39.105.185.11ssh -fN -D 7002 -i "D:\tbqapps2\cfg\******.pem&…

Oracle 23ai 中的重要新特性 VECTOR 數據類型

Oracle 23ai 中的 VECTOR 數據類型是 Oracle 數據庫在 AI 領域的一個重要新特性,它允許用戶以向量的形式存儲數據,并在這些向量的基礎上進行高效的搜索和分析。以下是對 Oracle 23ai VECTOR 數據類型的詳細解析: 參考官方文檔地址 https://d…

【Ubuntu-18.04.6 LTS (Bionic Beaver)】串口無法root登錄解決方案

root用戶無法再窗口登錄 用戶界面登錄提示 soory that didnot work 解決方案 GDM 配置 /etc/gdm3/custom.conf 中增加或刪除注釋 [security] AllowRoottrue重啟服務 service gdm restart確認 PAM 配置 GDM 使用 PAM 進行認證,可能 PAM 配置中限制了 root 登錄…

GitHub網頁打開慢的解決辦法

有時候看資料絮叨github網頁打不開,經百度后,發下下面的方法有效。 1)獲取github官網ip 我們首先要獲取github官網的ip地址,方法就是打開cmd,然后ping 找到github的地址:20.205.243.166 2)配…

體驗升級!貴州“森林之城”攜蘇州金龍新V系譜寫高端旅運新篇章

自今年出臺文旅“四免一多一減”方案以來,貴州省圍繞旅游資源,著力打造亮點,不斷提升產品供給水平,旅游市場持續火爆。近日,貴州森林之城旅運公司從蘇州金龍批量采購50座海格新V系豪華大巴,為貴州高端旅游市…

域名系統DNS的工作原理和服務搭建

文章目錄 域名解析和DNSDNS概念 DNS服務工作原理遞歸查詢迭代查詢遞歸和迭代的區別DNS緩存 DNS服務器的安裝whoisDNS軟件bind DNS主服務器實現1.在主配置文件中定義區域2.定義區域解析庫文件各種資源類型解析庫記錄定義項 3.配置識別區域庫文件4.重啟named服務啟用DNS客戶端緩存…

【EasyExcel】動態替換表頭內容并應用樣式

1.定義實體類 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ContentStyle; import com.alibaba.excel.metadata.BorderStyleEnum; import com.alibaba.excel.metadata.VerticalAlignmentEnum; import com.alibaba.excel.metadata.…

Java--static詳解

1.static靜態的意義,加在屬性面前就為靜態屬性;加在方法面前就為靜態方法 2.如圖,定義了一個靜態屬性age,一個非靜態屬性score; 輸出語句一共四句,其中第三句報錯,由于靜態和非靜態的區別&…

微氣象儀的工作原理

型號推薦:云境天合TH-WQX5】風力發電傳感器在風力發電系統中起著至關重要的作用,它們能夠實時監測和記錄各種關鍵參數,為風力發電機組的控制提供數據支持,從而確保風力發電系統的安全、高效運行。以下是對風力發電傳感器的詳細解析…

程序員有哪些職位?

互聯網行業中的崗位種類繁多、五花八門,學習一門技術后,重要的是找到合適的職業發展方向,程序員有哪些職業發展方向?一起來看看吧! 1.架構師 架構師需要程序員有強大的技術實力和深厚的技術積累。建筑師的成長需要經…

使用Docker制作python項目鏡像

各docker桌面版本集合:如果提示新版本系統不支持,可下載舊版本 我也分享在下面。 鏈接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取碼: g7ky –來自百度網盤超級會員v2的分享 來源參考:https://zhuanlan.zhihu.com/p/65…

one-hot編碼案例

import jieba from tensorflow.keras.preprocessing.text import Tokenizer # 安裝了新版本的tensorflow # from keras.preprocessing.text import Tokenizer # 系統里面沒有按照新版本的tensorflow 直接使用keras# pytroch tensorflow1.xxxx (keras) # 導入用于對象保存與加…

uniapp 九宮格抽獎

<template><view class"container"><view class"navleft" click"navback"><image src"/static/cj/left.png" mode""></image></view><view class"navtitle">抽獎</…

SAP S4 銷售組的定義和分配

spro-企業結構-定義-銷售與分銷-維護銷售組 新增一個記錄 spro-企業結構-分配-銷售與分銷-給銷售辦公室分配銷售組

JavaScript-map方法

map可以遍歷數組處理數據&#xff0c;并返回新的數組 語法&#xff1a; ?const arr[元素1&#xff0c;元素2&#xff0c;元素3] const newarrarr.map(function(數組的元素,數組的索引)){return 新元素 } const arr[blue,red,green]const newarrarr.map(function(ele,index){co…