axios請求的取消

axios請求的取消

  • 解決:axios請求的取消

解決:axios請求的取消

在使用 Axios 發起請求時,有時候你可能需要取消這些請求,比如當組件銷毀時或者用戶操作導致不再需要獲取之前發起的請求結果。Axios 支持通過 Cancel Token 取消請求。

以下是使用 Axios 的 CancelToken 來取消請求的基本步驟:

創建 Cancel Token:
首先你需要創建一個取消令牌(Cancel Token)。從 Axios 0.18.0 版本開始,推薦的方式是使用 axios.CancelToken.source() 工廠函數來創建一個包含 token 和 cancel 方法的對象。

const source = axios.CancelToken.source();

配置請求使用 Cancel Token:
在發起請求時,將上面創建的 token 傳遞給請求配置中的 cancelToken 字段。

axios.get('/user/12345', {cancelToken: source.token
})
.then(function(response) {// 處理成功情況
})
.catch(function(thrown) {if (axios.isCancel(thrown)) {console.log('Request canceled', thrown.message);} else {// 處理錯誤情況}
});

取消請求:
如果你想取消發起的請求,只需調用 source.cancel() 方法,并可以傳入一個可選的取消原因作為參數。

source.cancel('用戶取消了請求');

在 Vue 組件中管理取消邏輯(例如,在組件銷毀前取消請求):

export default {data() {return {cancelSource: null,};},methods: {fetchData() {this.cancelSource = axios.CancelToken.source();axios.get('/someEndpoint', {cancelToken: this.cancelSource.token}).then(response => {// 處理響應數據}).catch(error => {if (axios.isCancel(error)) {console.log('Request canceled');} else {// 處理其他錯誤}});}},beforeDestroy() {if (this.cancelSource) {this.cancelSource.cancel('Component destroyed, request canceled.');}}
}

以上是在Vue 2 中使用 Axios 取消請求的方法。記得合理管理你的取消令牌,避免內存泄漏或其他潛在問題。

最后附上示例

  • 示例:在輸入框里輸入1234,會發送4次請求,但只會保留1個請求,其余的請求會被取消

接口處添加cancelToken

export function getERPInfoByDeviceCode(data, cancelToken) {return request({url: '/v1/dfs/deviceInfo/getERPInfoByDeviceCode',method: 'post',params: data,cancelToken, // 添加取消令牌})
}

使用取消請求

// 此處template代碼為輸入框綁定input事件給getERPInfoByDeviceCodeData()方法即可
<script>
import { getERPInfoByDeviceCode } from '@/api/standard/device-base-api'
import axios from 'axios'
export default {data() {return {cancelToken: null, // 保存取消令牌的引用}},methods: {async getERPInfoByDeviceCodeData() {// 如果存在之前的請求,取消它if (this.cancelToken) {this.cancelToken.cancel('用戶取消了請求')}// 創建新的取消令牌const cancelTokenSource = axios.CancelToken.source()this.cancelToken = cancelTokenSourcetry {const params = {}// 請求接口傳入cancelTokenSource.token配置await getERPInfoByDeviceCode(params, cancelTokenSource.token)} catch (error) {if (axios.isCancel(error)) {console.log('Request canceled:', error.message)} else {// 處理其他錯誤console.error('Error fetching info:', error)}}},},
}
</script>

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

深入理解C++中的Lazy Evaluation:延遲計算的藝術

在編程世界里&#xff0c;“最好的運算就是從未執行的運算” —— 這句話深刻揭示了性能優化的核心思路。如果一個計算過程最終不會被使用&#xff0c;那么提前執行它就是純粹的資源浪費。這種思想衍生出了 Lazy Evaluation&#xff08;緩式評估&#xff09; 技術&#xff1a;延…

php完整處理word中表單數據的方法

使用php基礎方式實現word中表單處理<?php/*** zipFile 類用于處理 .docx 文件的解壓、修改和重新打包*/ class zipFile {/** var ZipArchive ZIP 文件對象 */private $zipFile;/** var string 臨時目錄路徑 */private $tempDir;/** var string 嵌入的 Excel 文件臨時目錄路…

Node.js 操作 MongoDB

目錄 Node.js 操作 MongoDB 一、什么是 MongoDB&#xff1f; 二、MongoDB 的功能概覽 三、MongoDB 的安裝與啟動 安裝 MongoDB&#xff08;以本地安裝為例&#xff09; 啟動 MongoDB 四、Node.js 如何連接 MongoDB&#xff1f; 使用 Mongoose ODM 工具 建立連接 五、…

先學Python還是c++?

選擇先學Python還是C&#xff0c;取決于你的學習目標、應用場景和職業規劃。以下是兩者的對比分析和建議&#xff0c;幫助你做出更適合自己的選擇&#xff1a;一、核心差異對比維度PythonC學習曲線簡單易上手&#xff08;語法接近自然語言&#xff09;復雜&#xff08;需理解指…

Trae + Notion MCP:將你的Notion數據庫升級為智能對話機器人

前言 Notion作為一款功能強大的信息管理工具&#xff0c;被廣泛用于項目跟蹤、知識庫構建和數據整理。然而&#xff0c;隨著數據量的增長&#xff0c;我們常常會發現自己陷入了重復和繁瑣的操作中。比如&#xff0c;為了找到符合特定條件的幾條數據&#xff0c;需要在龐大的數…

【iOS】retain/release底層實現原理

文章目錄前言前情知識retain和release的實現原理&#xff08;MRC手動管理&#xff09;retain&#xff08;MRC手動管理&#xff09;retain源碼內聯函數rootRetain源碼相關的sidetable_tryRetain()方法retain底層工作流程總結releaserelease源碼內聯函數rootRelease源碼小結前言 …

文件同步神器-rsync命令講解

rsync 是一個強大的文件同步與傳輸工具&#xff0c;廣泛用于本地或遠程服務器之間的高效文件備份、鏡像或同步。其核心優勢是通過增量傳輸?&#xff08;僅傳輸文件差異部分&#xff09;和壓縮減少數據傳輸量&#xff0c;同時支持保留文件元數據&#xff08;如權限、時間戳、所…

Rust: 工具鏈版本更新

遇到 cargo build --release 錯誤&#xff0c;比如&#xff0c;當前 Rust 工具鏈版本&#xff08;1.78.0&#xff09;低于依賴項所需的最低版本&#xff08;部分依賴要求 ≥1.82.0&#xff09;。以下是系統化的解決方案&#xff1a; &#x1f527; 一、升級 Rust 工具鏈&#x…

Prompt-to-Prompt| 修改Attention會有“反向傳播”或梯度計算?

需要注意的幾個問題&#xff1a;額外計算開銷&#xff1a;Cross-Attention Control原因&#xff1a;Prompt-to-Prompt的編輯方法需要動態干預交叉注意力&#xff08;Cross-Attention&#xff09;層的權重&#xff0c;這會引入額外的計算和顯存占用&#xff1a;需要緩存注意力矩…

電商API接口的優勢、數據采集方法及功能說明

一、電商API接口的核心優勢1. 高效性與準確性數據采集效率&#xff1a;API通過標準化參數&#xff08;如商品ID、類目&#xff09;直接獲取結構化數據&#xff08;JSON/XML&#xff09;&#xff0c;無需解析HTML&#xff0c;減少誤差。例如&#xff0c;采集1000條商品信息&…

iOS企業簽名掉簽,iOS企業簽名掉簽了怎么辦?

不能上架到App Store的iOS應用 &#xff0c;幾乎每一個開發者的選擇都是通過iOS簽名這種內測渠道來完成APP的上架任務&#xff0c;最常用的就是企業簽名、超級簽名以及TF上架&#xff0c;其中最受歡迎的當屬于企業簽名了。不過企業簽名會出現掉簽的現象&#xff0c;那么企業簽名…

存儲成本深度優化:冷熱分層與生命周期管理——從視頻平臺年省200萬實踐解析智能存儲架構

一、冷熱分層&#xff1a;存儲成本優化的核心邏輯1.1 數據訪問的“二八定律”據行業統計&#xff0c;80%的訪問集中在20%的熱數據上&#xff0c;而超過90天的歷史數據訪問頻率下降70%以上。某視頻平臺存儲超10PB媒體文件&#xff0c;未分層前年存儲成本高達680萬元&#xff0c;…

Java設計模式之《備忘錄模式》

目錄 1. 概念 1.1、定義 1.2、適用場景 2、角色劃分 3、實現 1、Originator&#xff08;發起人&#xff09; 2、Memento&#xff08;備忘錄&#xff09; 3、Caretaker&#xff08;管理者&#xff09; 4、使用示例 4、優缺點 4.1、優點 4.2、缺點 前言 備忘錄模式是…

SpringBoot 多環境配置

在實際項目開發中&#xff0c;不同環境往往有不同的配置需求&#xff1a; 開發環境&#xff08;dev&#xff09;&#xff1a;本地調試&#xff0c;連接測試數據庫&#xff1b;測試環境&#xff08;test&#xff09;&#xff1a;接口聯調&#xff0c;接近真實場景&#xff1b;生…

延凡智慧醫院數字孿生平臺

延凡智慧醫院數字孿生平臺是延凡科技依托物聯網、數字孿生、AI 算法及邊緣計算技術打造的醫療場景全要素數字化解決方案&#xff0c;通過構建醫院物理實體與虛擬空間的實時映射&#xff0c;實現醫療資源優化、運營效率提升及患者體驗升級。一、平臺價值&#xff08;一&#xff…

談談WebAssembly、PWA、Web Workers的作用和場景

WebAssembly、PWA 和 Web Workers 是現代 Web 開發中提升性能、擴展能力的重要技術&#xff0c;各自解決不同場景的問題&#xff0c;以下結合實際使用經驗分析&#xff1a;一、WebAssembly&#xff08;Wasm&#xff09;&#xff1a;高性能代碼執行作用&#xff1a;WebAssembly …

嵌入式第十八課!!數據結構篇入門及單向鏈表

在前幾章對C語言的學習中&#xff0c;我們學到了&#xff1a;基本的C語法和簡單算法面向過程的編程思想而在數據結構這一篇章&#xff0c;我們將要學習&#xff1a;常用的數據存儲結構算法面向對象的編程思想數據結構在正式開始學習之前&#xff0c;我們先來了解一下什么是數據…

win10任務欄出問題了,原來是wincompressbar導致的

問題描述兄弟們客戶說自己電腦現在有問題了&#xff0c;任務欄顯示的都不對&#xff0c;和之前的都不一樣&#xff0c;現在使用起來非常難受&#xff0c;我們來看一下&#xff0c;這到底是什么問題吧&#xff01;到客戶現場&#xff0c;查看發現&#xff0c;客戶桌面系統最底下…

FFmpegHandler 功能解析,C語言程序化設計與C++面向對象設計的核心差異

FFmpegHandler 功能解析 本文件記錄了關于 FFmpegHandler 類中核心函數工作流程的詳細解釋。Q: FFmpeg逐幀解碼&#xff0c;FFmpegHandler::openVideo 和 FFmpegHandler::readAVFrame 這兩個函數都分別做了什么&#xff1f; A: 可以把整個過程想象成“準備播放一部電影”&#…

Codeforces Round 1039 (Div. 2) A-C

A. Recycling Center題目大意 給你n個垃圾袋&#xff0c;每個垃圾袋有一個重量 在每秒鐘&#xff0c;你可以選擇一個垃圾袋&#xff0c;如果他的重量小于等于c&#xff0c;那么你可以不花費硬幣丟掉它 當你丟掉一個垃圾袋后&#xff0c;其他垃圾袋在這一秒重量會翻倍 問最少花費…