【vue3】中断请求、取消请求

一、需求说明

前端调请求接口过程中,主动取消请求

二、流程说明

三、解决方法

1、api文件:封装的接口

javascript 复制代码
import http from "../../http/fetch";
export default {
  /**
   * @description: 请求接口
   * @param {*} data 所需参数
   * @param {CancelToken} [cancelToken] 取消令牌
   * @return {*}
   */
  handleQq(data: any, cancelToken: any) {
    return http({
      url: "/aaa/completions",
      method: "post",
      data: data,
      cancelToken: cancelToken
    });
  },
};

2、vue文件:页面 +js方法

javascript 复制代码
<a-modal
    v-model:visible="resultData.visible"
    :closable="false"
    :maskClosable="false"
    :footer="null"
    :header="null"
    centered
    :width="280"
    :getContainer="() => $refs.modalStyle"
>
        <img src="../assets/images/lod.gif" alt="" class="gif" />
        <div class="mod">请求中,请稍后...</div>
        <div class="tow" @click="deleteOk">取消请求</div>
</a-modal>

1、添加一个cancelTokenSource,创建一个取消令牌源

2、请求完后清空取消令牌源

3、通过cancel()方法取消请求了

javascript 复制代码
import http from "@/api文件路径";
const { handleQq } = http;
import axios from "axios";

// 创建取消控制器
let resultData = reactive({
    visible:false,// 请求中的标识弹窗,有一个可以点击取消请求按钮
    tokenSource: { cancelTokenSource: null as null | any }
})

/**
 * @description: 调用接口
 * @return {*}
 */
const handleWit = async () => {
    resultData.visible = true;
      resultData.tokenSource.cancelTokenSource = axios.CancelToken.source(); // 添加一个cancelTokenSource,创建一个取消令牌源
    let parm = { model: "deepseek" };
    const { data } = await handleQq(parm, resultData.tokenSource.cancelTokenSource.token);
    if (data) {
        console.log("请求成功")
    } else {
      message.warning("请求失败");
    }
    resultData.visible = false;
  resultData.tokenSource.cancelTokenSource = null; // 请求完后清空取消令牌源
};

/**
 * @description: 取消请求
 * @return {*}
 */
const deleteOk = () => {
  resultData.visible = false;
  if (resultData.tokenSource.cancelTokenSource) {
    resultData.tokenSource.cancelTokenSource.cancel("用户取消识别"); // 通过cancel()方法就可以取消请求了
  }
};

四、参考链接

vue3中怎么中断正在请求的接口,取消请求-CSDN博客

vue如何中断请求 • Worktile社区

相关推荐
极小狐2 分钟前
极狐GitLab 容器镜像仓库功能介绍
java·前端·数据库·npm·gitlab
程序猿阿伟15 分钟前
《Flutter社交应用暗黑奥秘:模式适配与色彩的艺术》
前端·flutter
rafael(一只小鱼)18 分钟前
黑马点评实战笔记
前端·firefox
weifont19 分钟前
React中的useSyncExternalStore使用
前端·javascript·react.js
初遇你时动了情23 分钟前
js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
前端·javascript·react.js
影子信息37 分钟前
css 点击后改变样式
前端·css
几何心凉1 小时前
如何使用 React Hooks 替代类组件的生命周期方法?
前端·javascript·react.js
小堃学编程1 小时前
前端学习(1)—— 使用HTML编写一个简单的个人简历展示页面
前端·javascript·html
hnlucky2 小时前
通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?
linux·前端·学习·github·web·可用性测试·lvs
懒羊羊我小弟2 小时前
使用 ECharts GL 实现交互式 3D 饼图:技术解析与实践
前端·vue.js·3d·前端框架·echarts