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

Vue3 axios 请求设置 signal 信号属性,以便 abort 取消请求

 api:

taskMessage.ts

// 通过用户名(账号),查询任务列表
export const taskService = (signal?: AbortSignal) => {return request.get("/task", {// 设置 signal 信号属性,后续就可以通过 abort 取消请求signal: signal});
};// 通过用户名(账号),查询消息列表
export const messageService = (signal?: AbortSignal) => {return request.get("/message", {// 设置 signal 信号属性,后续就可以通过 abort 取消请求signal: signal});
};

发送 / 取消请求:

useFetchService.ts

import { onUnmounted, ref, type Ref } from "vue";
import type { AxiosResponse } from "axios";interface IFetchResponse<T> {data: Ref<T[]>;error: Ref<string>;isLoading: Ref<boolean>;refetch: () => Promise<void>;
}/*** 请求服务 hook* @param service 请求服务方法* @param args 请求参数* @returns*/
export const useFetchService = async <T>(service: (...args: any[]) => Promise<AxiosResponse<any, any>>,args: any[] = []
) => {// 请求服务const fetchService = async () => {try {state.isLoading.value = true;state.data.value = [];state.error.value = "";// 在参数数组中增加设置信号 AbortSignal,关联请求,以便能取消请求args.push(controller.signal);const result = await service(...args);state.data.value = result.data;} catch (error) {state.error.value = `服务调用失败: ${service.name}` + error;console.error(state.error.value);} finally {state.isLoading.value = false;}};// 创建及初始化状态const state: IFetchResponse<T> = {data: ref([]),error: ref(""),isLoading: ref(false),refetch: fetchService};// 创建 AbortController 用于取消请求const controller = new AbortController();onUnmounted(() => {// 取消请求controller.abort();});// 执行请求服务await fetchService();// 返回状态return state;
};

http://www.dtcms.com/a/251104.html

相关文章:

  • 牙科医疗设备EMC电磁兼容技术讨论
  • 大模型训练与推理显卡全指南:从硬件选型到性能优化
  • Apache Iceberg与Hive集成:非分区表篇
  • vscode python debugger 如何调试老版本python
  • 构建esp-IDF出现的(Git仓库所有权检测)问题
  • 高速 PCB 设计的材料选择,第 2 部分
  • 深度解析企业风控API技术实践:构建全方位企业风险画像系统
  • SpringBoot新闻项目学习day2-前后端搭建以及数据查询(分页查询)
  • docker部署MinIO对象存储实践:含控制台功能恢复方案
  • 【八股消消乐】构建微服务架构体系—链路超时控制
  • 每日算法刷题Day32 6.15:leetcode枚举技巧7道题,用时1h10min
  • Linux——libevent库
  • 单例模式的好处
  • 《解码SCSS:悬浮与点击效果的高阶塑造法则》
  • 安卓9.0系统修改定制化____安卓 9.0 解包、打包与系统修改基础及工具介绍 常识篇 四
  • (LeetCode 动态规划(基础版)) 279. 完全平方数 (动态规划dp)
  • 读取第三方的单细胞rds文件进行单细胞分析教程
  • MQTT:构建高效物联网通信的轻量级协议
  • 【多智能体强化学习】构建端到端的自主信息检索代理
  • 【Docker基础】Docker核心概念:命名空间(Namespace)之NET详解
  • XxlJob热点文章定时计算
  • 组合模式Composite Pattern
  • 系统辨识的研究生水平读书报告期末作业参考
  • LangChain面试内容整理-知识点14:工具包(Toolkits)与用法
  • 嵌入式学习笔记 - SH79F6441 堆栈栈顶可以是片上内部RAM(00H-FFH)的任意地址怎么理解
  • Jmeter录制APP脚本
  • Kafka多副本机制
  • React 实现卡牌翻牌游戏
  • 小记:把react项目从web迁移到electron
  • 蒸馏微调DeepSeek-R1-Distill-Qwen-7B