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 近期更新模式的推测…