uniapp,每次請求時,中斷上次請求

1.封裝uni.request

import {BASE_URL} from "@/config/config.js"import store from "@/store/index.js";
class RequestManager {constructor() {this.requestTasks = new Map() // 存儲所有請求任務this.baseURL = BASE_URLthis.header = {'Content-Type': 'application/json','Authorization': uni.getStorageSync("AccessToken") ? 'Bearer ' + uni.getStorageSync("AccessToken") : ''}}/*** 發送請求* @param {Object} options 請求配置* @param {string} requestId 請求ID,用于標識和取消特定請求* @returns {Promise}*/request(options, requestId = 'default') {// 中斷同ID的之前的請求if (this.requestTasks.has(requestId)) {this.requestTasks.get(requestId).abort()this.requestTasks.delete(requestId)}return new Promise((resolve, reject) => {const config = {url: this.baseURL + options.url,method: options.method || 'GET',data: options.data || {},header: options.header ? Object.assign({}, this.header, options.header) : options.header,success: (response) => {let res = response.dataif (res.code === 422) {store.commit('SET_USERINFO', {})store.commit('SET_ACCESSTOKEN', '')store.commit('SET_MESSAGETOTAL', 0)uni.removeStorageSync("userInfo")uni.removeStorageSync('AccessToken', '')//回到登錄頁uni.showToast({title: "請登錄!",icon: 'none',success() {setTimeout(() => {uni.reLaunch({url: '/pages/user/index?type=login'})}, 1500)}})return false;}else if(res.code != 200){uni.showToast({title: res.msg || '',duration: 1500,icon: 'none',})}else{resolve(res)}},fail: (err) => {reject(err)},complete: () => {// this.requestTasks.delete(requestId)}}const task = uni.request(config)this.requestTasks.set(requestId, task)})}/*** 中斷特定請求* @param {string} requestId 請求ID*/abort(requestId = 'default') {if (this.requestTasks.has(requestId)) {this.requestTasks.get(requestId).abort()this.requestTasks.delete(requestId)}}/*** 中斷所有請求*/abortAll() {this.requestTasks.forEach(task => {task.abort()})this.requestTasks.clear()}// 快捷方法...get(url, data = {}, header = {}, requestId = 'default') {return this.request({url,method: 'GET',data,header}, requestId)}post(url, data = {}, header = {}, requestId = 'default') {return this.request({url,method: 'POST',data,header}, requestId)}
}// 創建單例
const http = new RequestManager()export default http

2.封裝api

goodsLess請替換成參數+自定義id,以防出現同一接口不同參數也出現中斷的情況

import http from '@/request/request.js'//購物車減少商品數量
export const goodsLess = ({ goods_id, goods_sku_id }) => {return http.get(`api/user/cart/sub?goods_id=${goods_id}&goods_sku_id=${goods_sku_id}`, {}, {}, 'goodsLess')
}//購物車增加商品數量
export const goodsMore = ({ goods_id, goods_sku_id, goods_num }) => {return http.get(`api/user/cart/add?goods_id=${goods_id}&goods_sku_id=${goods_sku_id}&goods_num=${goods_num}`, {}, {}, 'goodsMore')
}

3.在頁面中使用

//增加購物車數量goodsMore({ goods_id: id, goods_sku_id, goods_num: 1 }).then(res => {if(res.code == 200){item.total_num++}})

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

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

相關文章

DuDuTalk | 武漢賽思云科技有限公司通過武漢市人工智能企業認定!

近日,2025年武漢市人工智能企業名單正式公布!武漢賽思云科技有限公司(以下簡稱賽思云科技)憑借卓越的技術實力與創新成果,成功入選武漢市人工智能企業。這是對公司長期深耕AI語音智能領域、推動數字化轉型的高度認可&a…

STM32實現傅里葉變換精確計算采樣電流值

以下是基于離散傅里葉變換(DFT)算法在單片機上實現精確電流值計算的全流程指南,結合硬件選型、算法優化、代碼實現及實際應用場景分析,綜合多篇技術文檔的實踐要點: ?? 一、系統設計核心要點 硬件選型與配置 單片機選擇:優先采用帶硬件浮點單元(FPU)的STM32F4/F7系列…

python 爬蟲 下載視頻

測試 OK II 在開發者工具里面 直接搜索m3u8 可以直接找相對應連接地址繼續分析 這個m3u8 url地址是從哪里過來的 在什么地方有 III 我們想要視頻數據 <m3u8連接> 在 網頁源代碼里面有獲取整個視頻內容 --》分為N個視頻片段《ts文件》-->在m3u8連接里面--> 視頻播放…

希爾伯特空間:無窮維度的幾何世界

希爾伯特空間&#xff1a;無窮維度的幾何世界 從量子物理到信號處理&#xff0c;希爾伯特空間為現代科學與工程提供了強大的數學框架 引言&#xff1a;無限維度的舞臺 在數學和物理學的廣闊領域中&#xff0c;希爾伯特空間扮演著至關重要的角色。這個完備的內積空間不僅推廣了…

Transformer結構與代碼實現詳解

參考&#xff1a; Transformer模型詳解&#xff08;圖解最完整版&#xff09; - 知乎https://zhuanlan.zhihu.com/p/338817680GitHub - liaoyanqing666/transformer_pytorch: 完整的原版transformer程序&#xff0c;complete origin transformer programhttps://github.com/lia…

Adobe InDesign 2025

Adobe InDesign 2025(ID2025)桌面出版軟件和在線發布工具,報刊雜志印刷排版設計軟件。Adobe InDesign中文版主要用于傳單設計,海報設計,明信片設計,電子書設計,排版,手冊設計,數字雜志,iPad應用程序和在線交互文檔。它是首款支持Unicode文本處理的主流DTP應用程序,率先使用新型…

Linux下獲取指定時間內某個進程的平均CPU使用率

一、引言 通過pidstat工具可以測量某個進程在兩個時間點之間的平均CPU利用率。 二、pidstat工具的安裝 pidstat屬于sysstat套件的一部分。以Ubuntu系統為例&#xff0c;執行下面命令下載安裝sysstat套件&#xff1a; apt-get install sysstat 執行完后&#xff0c;終端執行p…

1.4 蜂鳥E203處理器NICE接口詳解

一、NICE接口的概念 NICE&#xff08;Nuclei Instruction Co-unit Extension&#xff09;接口是蜂鳥E203處理器中用于擴展自定義指令的協處理器接口&#xff0c;基于RISC-V標準協處理器擴展機制設計。它允許用戶在不修改處理器核流水線的情況下&#xff0c;通過外部硬件加速特…

Oracle 遞歸 + Decode + 分組函數實現復雜樹形統計進階(第二課)

在上篇文章基礎上&#xff0c;我們進一步解決層級數據遞歸匯總問題 —— 讓上級部門的統計結果自動包含所有下級部門數據&#xff08;含多級子部門&#xff09;&#xff0c;并新增請假天數大于 3 天的統計維度。通過遞歸 CTE、DECODE函數與分組函數的深度結合&#xff0c;實現真…

MySQL 數據類型全面指南:詳細說明與關鍵注意事項

MySQL 數據類型全面指南&#xff1a;詳細說明與關鍵注意事項 MySQL 提供了豐富的數據類型&#xff0c;合理選擇對數據庫性能、存儲效率和數據準確性至關重要。以下是所有數據類型的詳細說明及使用注意事項&#xff1a; 一、數值類型 整數類型 類型字節有符號范圍無符號范圍說…

leetcode437-路徑總和III

leetcode 437 思路 利用前綴和hash map解答 前綴和在這里的含義是&#xff1a;從根節點到當前節點的路徑上所有節點值的總和 我們使用一個 Map 數據結構來記錄這些前綴和及其出現的次數 具體思路如下&#xff1a; 初始化&#xff1a;創建一個 Map &#xff0c;并將前綴和 …

UI前端與數字孿生融合探索新領域:智慧家居的可視化設計與實現

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 一、引言&#xff1a;智慧家居的數字化轉型浪潮 在物聯網與人工智能技術的推動下&#xff0c…

數據結構知識點總結--緒論

1.1 數據結構的基本概念 1.1.1 基本概念和術語 主要涉及概念有&#xff1a; 數據、數據元素、數據對象、數據類型、數據結構 #mermaid-svg-uyyvX6J6ofC9rFSB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uyyvX6…

pip install mathutils 安裝 Blender 的 mathutils 模塊時,編譯失敗了

你遇到的問題是因為你試圖通過 pip install mathutils 安裝 Blender 的 mathutils 模塊時&#xff0c;編譯失敗了&#xff0c;主要原因是&#xff1a; 2018年 的老版本也不行 pip install mathutils2.79 ? 報錯核心總結&#xff1a; 缺失頭文件 BLI_path_util.h&#xff1a;…

編譯安裝交叉工具鏈 riscv-gnu-toolchain

參考鏈接&#xff1a; https://zhuanlan.zhihu.com/p/258394849 1&#xff0c;下載源碼 git clone https://gitee.com/mirrors/riscv-gnu-toolchain 2&#xff0c;進入目錄 cd riscv-gnu-toolchain 3&#xff0c;去掉qemu git rm qemu 4&#xff0c;初始化 git submodule…

復制 生成二維碼

一、安裝插件 1、復制 npm install -g copy-to-clipboard import copy from copy-to-clipboard; 2、生成二維碼 & 下載 npm install -g qrcode import QRCode from qrcode.react; 二、功能&#xff1a;生成二維碼 & 下載 效果圖 1、常規使用&#xff08;下載圖片模糊…

自由職業的經營視角

“領導力的核心是幫助他人看到自己看不到的東西。” — 彼得圣吉 最近與一些自由職業者的交流中&#xff0c;發現很多專業人士都會從專業視角來做交流&#xff0c;這也讓我更加理解我們海外戰略顧問莊老師在每月輔導時的提醒——經營者視角和專業人士視角的不同。這不僅讓大家獲…

MR30分布式 IO在物流堆垛機的應用

在現代物流行業蓬勃發展的浪潮中&#xff0c;物流堆垛機作為自動化倉儲系統的核心設備&#xff0c;承擔著貨物的高效存取與搬運任務。它憑借自動化操作、高精度定位等優勢&#xff0c;極大地提升了倉儲空間利用率和貨物周轉效率。然而&#xff0c;隨著物流行業的高速發展&#…

告別固定密鑰!在單一賬戶下用 Cognito 實現 AWS CLI 的 MFA 單點登錄

大家好&#xff0c;很多朋友&#xff0c;特別是通過合作伙伴或服務商使用 AWS 的同學&#xff0c;可能會發現自己的 IAM Identity Center 功能受限&#xff0c;無法像在組織管理賬戶里那樣輕松配置 CLI 的 SSO (aws configure sso)。那么&#xff0c;我們就要放棄治療&#xff…

未來機器視覺軟件將更注重成本控制,邊緣性能,魯棒性、多平臺支持、模塊優化與性能提升,最新版本opencv-4.11.0更新了什么

OpenCV 4.11.0 作為 4.10.0 的后續版本,雖然沒有在提供的搜索結果中直接列出詳細更新內容,但結合 OpenCV 4.10.0 的重大改進方向(發布于 2024 年 6 月),可以合理推斷 4.11.0 版本可能延續了對多平臺支持、模塊優化和性能提升的強化。以下是基于 OpenCV 近期更新模式的推測…