Vue项目中Axios取消请求功能实现

1,封装axios实例 request.js

javascript 复制代码
const axios = require('axios');
 
// 创建一个axios实例
const service = axios.create({
  baseURL: "https://ip:port",
  timeout: 60000
});
 
export default service

2,封装请求 api.js

javascript 复制代码
import service from 'request'
import axios from "axios";

export const canCancelApi = (data, cancel) => {
    return service({
        url: '/api/test',
        method: 'post',
        data,
        cancelToken: new axios.CancelToken((c) => {
            cancel && cancel(c)
        })
    })
}

3,调用api

javascript 复制代码
import {onBeforeUnmount} from 'vue'
import {canCancelApi} from "api";


const apiCancel = null
// 通过回调接收caccel方法
canCancelApi(params, (cancle) => {
    apiCancel = cancle
  }).then(res => {})

onBeforeUnmount(() => {
  if(apiCancel){
    // 关闭页面时如果请求存在则取消请求
    apiCancel('custom-cancel')
  }
}
相关推荐
Hilaku几秒前
当 Gemini 3 能写出完美 CSS 时,前端工程师剩下的核心竞争力是什么?
前端·javascript·ai编程
csbysj20207 分钟前
SVG 椭圆详解
开发语言
oioihoii22 分钟前
C++数据竞争与无锁编程
java·开发语言·c++
最贪吃的虎22 分钟前
什么是开源?小白如何快速学会开源协作流程并参与项目
java·前端·后端·开源
DigitalOcean22 分钟前
加速 JavaScript 开发:DigitalOcean 应用托管现已原生支持 Bun
javascript
资生算法程序员_畅想家_剑魔23 分钟前
Java常见技术分享-16-多线程安全-并发编程的核心问题
java·开发语言
We....23 分钟前
Java SPI 机制
java·开发语言
裴嘉靖24 分钟前
Vue + ECharts 实现图表导出为图片功能详解
前端·vue.js·echarts
用泥种荷花24 分钟前
【LangChain学习笔记】输出解析器
前端
Macbethad27 分钟前
区块链技术在分布式系统中的应用实践技术报告
开发语言·c#