网站首页 > 技术文章 正文
「小墨是前端」专注分享前端技术,推荐优秀的开源项目,展示Github、Gitee上的创意作品,带你深入前端底层,一起成长。
网页加载速度慢?用户体验差?请求超时让人崩溃?别慌!今天带来 Axios 和 Fetch 的取消请求秘籍,助你轻松掌控异步操作,让网页像火箭一样飞速!
为什么需要取消请求?
想象一下,用户搜索商品,触发一个耗时请求。但用户没耐心等,立马换了个关键词重新搜索。这时,之前的请求还在默默运行,浪费资源和带宽,甚至阻塞后续请求,导致页面卡顿。取消请求,就是解决这个问题的利器!
Axios 如何取消请求?两招制胜!
Axios 提供了 CancelToken 来取消请求,有两种用法:
- 执行器模式: 创建 CancelToken 实例,传入一个执行器函数,获取 cancel 函数。
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/api/search', {
cancelToken: new CancelToken(c => { cancel = c; })
}).catch(e => { axios.isCancel(e) && console.log('请求取消成功!', e.message); });
// 取消请求
cancel('用户操作取消');
- 令牌模式: 使用 axios.CancelToken.source() 创建包含 token 和 cancel 的对象,更简洁易用。
const { token, cancel } = axios.CancelToken.source();
axios.get('/api/search', { cancelToken: token });
// 取消请求
cancel('用户操作取消');
Fetch 也能取消!AbortController来帮忙
AbortController 是更通用的取消异步操作的 API。
const controller = new AbortController();
fetch('/api/search', { signal: controller.signal })
.catch(e => { e.name === 'AbortError' && console.log('Fetch 请求取消成功!'); });
// 取消请求
controller.abort();
记住,AbortController 需要 polyfill 来兼容旧版浏览器。
手写CancelToken,深入理解原理
核心思想是利用 Promise:
function CancelToken(executor) {
let resolve;
this.promise = new Promise(r => resolve = r);
executor(message => {
resolve(message); // 触发取消
});
}
// 使用示例 (简化版)
let cancel;
const token = new CancelToken(c => cancel = c);
fetch('/data', { cancelToken: token });
cancel(); // 取消请求
当调用 cancel 时,Promise 状态改变,触发后续的取消逻辑。
实战场景与技巧
- 搜索框优化: 用户输入时取消上一个请求,避免不必要的网络开销。
- 页面切换: 离开页面时取消未完成的请求,释放资源。
- 定时取消: 设置超时时间,自动取消长时间未响应的请求。
总结
取消请求看似小技巧,却能显著提升网页性能和用户体验。掌握 Axios 和 Fetch 的取消机制,让你的网页告别卡顿,飞速响应用户操作!
创作不易,欢迎大家关注、点赞、收藏、转发!我会继续分享高质量的干货和前沿的技术,给大家提供更多有价值的内容!
- 上一篇: 前端性能优化有效的方法 前端性能优化有效的方法是
- 下一篇: 这些奇技浮巧,助你优化前端应用性能
猜你喜欢
- 2025-07-06 9大高性能优化经验总结,强烈建议收藏
- 2024-10-10 为什么你的网站那么慢?本篇将带你掌握前端HTML5性能优化的技巧
- 2024-10-10 前端开发 25种提高网页加载速度的方法和技巧
- 2024-10-10 如何优化前端可访问性 如何对前端性能进行优化
- 2024-10-10 Web前端性能优化可以从哪些方面入手?
- 2024-10-10 前端优化的步骤 前端优化的步骤包括
- 2024-10-10 前端性能优化之--浏览器缓存策略 前端页面缓存
- 2024-10-10 经典面试题-Web前端性能优化方法之延迟加载
- 2024-10-10 经典面试题-Web前端性能优化方法(1)
- 2024-10-10 前端网站性能优化-前端优化网站性能的方法
你 发表评论:
欢迎- 593℃几个Oracle空值处理函数 oracle处理null值的函数
- 586℃Oracle分析函数之Lag和Lead()使用
- 574℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 571℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 567℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 559℃【数据统计分析】详解Oracle分组函数之CUBE
- 546℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 540℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)