Axios 取消请求
Axios 的现代取消方式是 AbortController;旧的 CancelToken 已废弃。
#type / concept
#status / growing
#tech / network
#platform / browser
#resource / http
#resource / javascript
#package / axios
[!info] related notes
- 所属 MOC: HTTP 与前端网络请求
- 上位概念: Axios
- 前置概念: Axios 请求配置, Fetch API
- 并列概念: Axios 错误模型
Axios 取消请求
一句话定义
Axios 通过 AbortController 的 signal 取消请求;老的 CancelToken 已经不建议新项目使用。
核心内容
推荐写法
const controller = new AbortController()
axios.get('/users', {
signal: controller.signal
})
controller.abort()
取消和超时不是一回事
timeout主要管响应超时abort主要管主动中断
常见场景
- 搜索框连续输入,只保留最后一次
- 路由切换时取消旧请求
- 组件卸载时终止飞行中的请求
- 上传/下载中断
边界与易混淆点
CancelToken是旧方案- 取消请求后应该把异常路径也纳入统一错误处理
timeout和abort往往要一起考虑
最短记忆方式
- 新方案:
AbortController - 旧方案:
CancelToken - 取消用于主动中断,请别和超时混为一谈