当前位置: 首页 > news >正文

封装axios,实现取消请求

封装axios

import axios from 'axios'// 创建自定义的请求类
class CancelableRequest {constructor() {this.controller = new AbortController()}abort() {this.controller.abort()}
}// 创建 axios 实例
const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // 在 .env 文件中配置timeout: 5000 // 请求超时时间
})// 请求拦截器
service.interceptors.request.use(config => {// 在发送请求之前做些什么// 例如:添加 token// if (store.getters.token) {//   config.headers['Authorization'] = `Bearer ${store.getters.token}`// }return config},error => {// 对请求错误做些什么console.log(error) // for debugreturn Promise.reject(error)}
)// 响应拦截器
service.interceptors.response.use(response => {const res = response.data// 如果自定义 code 不是 200,则判断为错误if (res.code !== 200) {// 可以在这里处理错误提示return Promise.reject(new Error(res.message || 'Error'))} else {return res}},error => {console.log('err' + error) // for debug// 可以在这里处理错误提示return Promise.reject(error)}
)export const get = (url, params = {}, config = {}) => {const cancelable = new CancelableRequest()const promise = service.get(url, {params,signal: cancelable.controller.signal,...config})promise.__proto__.abort = () => cancelable.abort();return promise
}

封装api

import { get } from "@/utils/requestPlus.js"
//有缘-无缘-专项服务
export const serviceList = (params) => {return get(`/point/market/service/list`, params, {method: "get"});
}

在页面中使用

//专项服务getSpecializedServices(parentClassify, classify, name = "") {if(this.requestTarget) request.abort()this.requestTarget = serviceList({ parentClassify, classify, name }).then((res) => {let { rows = [] } = res;this.$set(this.serviceData, 2, rows);});},

使用场景:tab切换,每次点击取消上次的请求

相关文章:

  • 个人码支付免签系统三网免挂支付宝微信QQ钱包即时到账收款二维码聚合支付源码
  • 可视化图解算法33:判断是不是平衡二叉树
  • 告别异步复杂性?JDK 21 虚拟线程让高并发编程重回简单
  • I2C总线驱动开发:MPU6050应用
  • 《Python星球日记》 第36天:线性代数基础
  • 网站防护如何无惧 DDoS 攻击?
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据类型转换操作
  • 邂逅蓝耘元生代:ComfyUI 工作流与服务器虚拟化的诗意交织
  • 【coze】手册小助手(提示词、知识库、交互、发布)
  • 黑马点评day04(分布式锁-setnx)
  • AI数据分析中的伪需求场景:现状、挑战与突破路径
  • RAG_Techniques:探索GitHub热门RAG技术开源项目
  • MySQL的内置函数与复杂查询
  • HarmonyOS 5.0 分布式数据协同与跨设备同步​​
  • 数据分析汇报七步法:用结构化思维驱动决策
  • 大数据应用开发和项目实战-电商双11美妆数据分析
  • 第八章,STP(生成树协议)
  • 【IP101】图像特征提取技术:从传统方法到深度学习的完整指南
  • K8S PV 与 PVC 快速开始、入门实战
  • 【安全】端口保护技术--端口敲门和单包授权
  • 是否有中国公民受印巴冲突影响?外交部:建议中国公民避免前往冲突涉及地点
  • 德国新一届联邦政府宣誓就职
  • 印巴军事对峙加剧,小规模冲突收场还是走向大战?
  • 江南华南较强降雨扰返程,北方大部需防风沙
  • 巴基斯坦宣布禁止与印度的进口贸易
  • 文旅局局长回应游客住家里:“作为一个宣恩市民我也会这么做”