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')
  }
}
相关推荐
Fate_I_C1 天前
Kotlin函数一
android·开发语言·kotlin
Eiceblue1 天前
C# 实现 XLS 与 XLSX 格式双向互转(无需依赖 Office)
开发语言·c#·visual studio
当时只道寻常1 天前
Vue3 集成 NProgress 进度条:从入门到精通
前端·vue.js
kyriewen1 天前
React性能优化:从“卡成狗”到“丝般顺滑”的5个秘诀
前端·react.js·性能优化
米丘1 天前
Vue 3.x 单文件组件(SFC)模板编译过程解析
前端·vue.js·编译原理
helloweilei1 天前
Web Streams 简介
前端·javascript
悟空瞎说1 天前
Flutter热更新 Shorebird CodePush 原理、实现细节及费用说明
前端·flutter
didadida2621 天前
从“不存在”的重复请求,聊到 Web 存储的深坑
前端
xiaominlaopodaren1 天前
Three.js 渲染原理-透明渲染为什么这么难
前端