news 2026/6/9 18:42:04

Axios网络请求优化(缓存)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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("请求未完成,已被取消"); } })();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:37:30

合理使用useEffect,避免不必要的副作用

在 React 中&#xff0c;useEffect 是一个常用的钩子&#xff0c;用于处理副作用&#xff08;例如数据获取、订阅等&#xff09;。但是&#xff0c;如果 依赖数组 配置不当&#xff0c;会导致以下问题&#xff1a;副作用重复执行&#xff1a;依赖数组过大或配置错误时&#xff…

作者头像 李华
网站建设 2026/6/10 12:59:10

mysql - 1

构建MySQL服务器步骤一//安装提供服务和命令软件[rootmysql50 ~]# yum -y install mysql-server mysql软件已安装[rootmysql50 ~]# rpm -q mysql-server mysqlmysql-server-8.0.26-1.moduleel8.4.06526de068a7.x86_64mysql-8.0.26-1.moduleel8.4.06526de068a7.x86_64[rootmysql…

作者头像 李华
网站建设 2026/6/10 16:36:42

计科毕业设计最全方向帮助

文章目录&#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f;1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f;&#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 大数据电商用户行为…

作者头像 李华
网站建设 2026/6/10 16:36:43

LobeChat能否支持PWA安装?桌面快捷方式创建方法

LobeChat能否支持PWA安装&#xff1f;桌面快捷方式创建方法 在AI助手逐渐成为日常生产力工具的今天&#xff0c;用户不再满足于“能用”&#xff0c;而是追求“好用”——启动要快、交互要顺、离线也能访问。尤其当我们在手机上频繁打开某个网页版聊天工具时&#xff0c;总希望…

作者头像 李华
网站建设 2026/6/10 7:57:55

RTL8852BE驱动:Linux无线网卡兼容性的终极解决方案

RTL8852BE驱动&#xff1a;Linux无线网卡兼容性的终极解决方案 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统下的无线网卡识别问题而烦恼吗&#xff1f;RTL8852BE驱动项…

作者头像 李华
网站建设 2026/6/8 20:38:54

原神60帧限制突破指南:让你的提瓦特之旅更加丝滑流畅

原神60帧限制突破指南&#xff1a;让你的提瓦特之旅更加丝滑流畅 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》的60帧限制而苦恼吗&#xff1f;想要在高刷显示器上体验真…

作者头像 李华