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

Axios网络请求优化(缓存)

合理使用缓存,避免重复请求

// 通过缓存机制,存储已经发出的请求结果,如果同样的请求再次发起, // 直接从缓存中获取数据,而不是重新发请求。 import axios from "axios"; // 缓存对象 const cache = new Map<string, any>(); // 封装带缓存的请求函数 async function axiosWithCache(url: string): Promise<any> { if (cache.has(url)) { console.log(`从缓存中获取数据: ${url}`); return cache.get(url); } console.log(`发送网络请求: ${url}`); const response = await axios.get(url); // 将结果存入缓存 cache.set(url, response.data); return response.data; } // 使用示例 (async () => { const url = "https://jsonplaceholder.typicode.com/todos/1"; const result1 = await axiosWithCache(url); // 第一次请求 console.log(result1); const result2 = await axiosWithCache(url); // 从缓存获取 console.log(result2); })();

使用 abortController 取消不再需要的请求。

// 当用户离开页面或切换视图时,取消掉未完成的请求以节省资源。 // 封装请求函数,支持 AbortController import axios from "axios"; // 封装带取消功能的请求函数 async function axiosWithAbort(url: string, controller: AbortController): Promise<any> { try { const response = await axios.get(url, { signal: controller.signal, // 绑定 AbortController 的 signal }); return response.data; } catch (error: any) { if (axios.isCancel(error)) { console.log(`请求已取消: ${url}`); } else { console.error("请求失败", error); } throw error; } } // 使用示例 (async () => { const controller = new AbortController(); const url = "https://jsonplaceholder.typicode.com/todos/1"; // 模拟请求 const fetchPromise = axiosWithAbort(url, controller); // 模拟用户取消请求 setTimeout(() => { controller.abort(); // 取消请求 }, 100); try { const result = await fetchPromise; console.log(result); } catch (error) { console.log("请求未完成,已被取消"); } })();
http://www.cnnetsun.cn/news/93719.html

相关文章:

  • 通过短时倒谱(Cepstrogram)计算进行时-倒频分析研究附Matlab代码
  • 无人机启用的无线传感器网络中的节能数据收集附Matlab代码
  • [特殊字符]️ 羽毛球检测数据集介绍-1686张图片 运动赛事分析 智能健身设备 自动裁判系统 体育视频内容分析 机器人运动训练
  • AI 论文辅助对决!虎贲等考 AI:全流程赋能,稳坐毕业论文 “最强辅助” 宝座
  • 查重 + AIGC 双检测通关!虎贲等考 AI 降重功能,解锁论文原创新境界
  • BetterNCM插件安装终极指南:解锁网易云音乐隐藏功能
  • 百度网盘直链解析:告别龟速下载的技术革命
  • TranslucentTB启动故障修复指南:快速解决任务栏透明工具无法运行问题
  • 速藏!AI大模型工程师进阶手册:从入门到实战的全攻略
  • NVIDIA Profile Inspector终极优化指南:解锁显卡隐藏性能
  • Ubuntu执行apt-get update报错:W: 无法下载 http://cn.mirrors.ustc.edu.cn/ubuntu/dists/bionic/InRelease 连接失败
  • LobeChat能否对接古籍数据库?中华传统文化智能问答系统
  • 微信多设备登录难题的终极解决方案
  • PlayCover深度解密:在Mac上畅享iOS应用的终极方案
  • RGBD slam
  • BBDown完全指南:轻松下载B站视频的5大实用技巧
  • 历时两年多,“水下大疆”IPO又有新进展! 深之蓝海洋科技股
  • MusicFree插件完全指南:解锁个性化音乐体验的终极教程
  • 显卡驱动终极清理方案:Display Driver Uninstaller完整使用指南
  • 5分钟从入门到精通!PandaWiki:零代码小白的AI编程助手
  • 基于JAVA的图书馆图书资源检索借阅系统
  • 原神自动化脚本7大实用技巧:新手也能快速上手的完整指南
  • 基于Java的奖学金评定评优系统的设计与实现
  • 03-编写和运行Playbook
  • 如何用Locale Emulator实现完美区域语言模拟:新手终极指南
  • Java与操作系统常用命令交互全解析
  • Mac微信防撤回插件WeChatIntercept:终极完整使用指南
  • LobeChat能否实现AI律师函撰写?法律文书自动化产出
  • 基于Python的在线零食购物商城系统的设计与实现
  • 小爱音箱AI升级终极指南:三步打造你的智能语音管家