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

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

 一、需求说明

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

二、流程说明


三、解决方法

1、api文件:封装的接口

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方法

<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()方法取消请求了

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社区

相关文章:

  • 激光雷达产业观察--速腾聚创发展脉络2025.3.14
  • 【大模型基础_毛玉仁】2.3 基于 Encoder-only 架构的大语言模型
  • jenkins+robotFramework持续集成(三)之jenkins参数
  • 【Java从入门到精通】一篇文章彻底搞懂:类和对象到底是什么?
  • 大摩闭门会:250312 学习总结报告
  • Arbitrum之智能合约
  • 用 Python 检测两个文本文件的相似性的几种方法
  • LeetCode 滑动数组统计+至少 2962. 统计最大元素出现至少 K 次的子数组
  • C++ —— 线程安全
  • 神经网络的数据集处理
  • vxe-table中vxe-grid中的合并单元格(合并行、列)
  • 音视频入门基础:RTP专题(17)——音频的SDP媒体描述
  • 主流向量数据库对比
  • ubuntu 24 安装 python3.x 教程
  • 深度学习篇---Opencv中Haar级联分类器的自定义
  • 怎样进行相关论文的调研——How to conduct research on relevant papers?
  • WebSocket 使用教程
  • C# net deepseek RAG AI开发 全流程 介绍
  • 大数据学习(66)- CDH管理平台
  • 爬虫一些基础知识的备忘录(需要自取)
  • 吏亦有道|秦汉的发明家与技术传承
  • 讲座预告|大国博弈与创新破局:如何激励中国企业创新
  • 我国成年国民综合阅读率82.1%,数字化阅读接触率首超80%
  • 人民日报整版聚焦第十个“中国航天日”:星辰大海,再启新程
  • 研讨会|中国古代石刻与历史研究的多重图景
  • 富力地产:广州富力空港假日酒店第一次拍卖流拍,起拍价约2.77亿元