前端面试:axios 是否可以取消请求?

在实际工作中,取消请求的场景通常出现在以下几种情况中:

  1. 用户导航离开页面:如果用户在请求数据的过程中快速切换到另一个页面,可以通过取消未完成的请求来优化性能。
  2. 输入框的搜索提示:当用户在输入框中输入内容时,可以结合防抖的方式取消之前的请求,从而只保留最新的请求,避免发送过多的请求。

取消请求的实现方式

Axios 提供了 CancelToken 的功能来实现请求的取消。以下是具体的代码示例:

复制代码
import axios from 'axios';  

// 创建一个取消源  
const CancelToken = axios.CancelToken;  
let cancel;  

// 发送请求时可以传入 cancel token  
axios.get('/api/data', {  
  cancelToken: new CancelToken(function executor(c) {  
    // 这里可以保存对 cancel 的引用  
    cancel = c;  
  })  
}).then(response => {  
  console.log(response.data);  
}).catch(error => {  
  if (axios.isCancel(error)) {  
    console.log('请求已被取消', error.message);  
  } else {  
    // 处理其他错误  
    console.error('请求出错', error);  
  }  
});  

// 需要取消请求时调用 cancel  
cancel('请求被用户取消');  

注意:

  1. 仅在需要取消请求的情况下调用 cancel 函数。
  2. 取消请求的异常会被 catch 捕获,通过 axios.isCancel 来判断是否是取消的原因。
  3. 记得根据实际需求合理使用取消请求的功能,以避免不必要的请求和资源浪费
相关推荐
计算机魔术师37 分钟前
DeepSeek 据报道接近完成至少 800 亿元融资,腾讯与宁德时代参与
前端
可乐ea1 小时前
多模型编排的三层:框架、模型路由与提供商路由
前端·网络·人工智能·ai智能体·多智能体协作·多模型编排·大模型路由
青柠之夏cc3 小时前
前端拖拽功能原生实现,不引入拖拽库完成业务
开发语言·前端·python
liangshanbo12153 小时前
前端大文件切片上传怎么做?
前端
Sand(ContextGate)4 小时前
Python Agent 测试实战:测试与评估,让 Agent 像传统软件一样可交付
前端·javascript·python·microsoft·ai
广州华水科技4 小时前
单北斗GNSS变形监测系统在城市安全与地质灾害中的应用前景
前端
颜进强4 小时前
20 · NestJs循环依赖与 forwardRef:容器为什么在环面前会死,"占位再补齐"怎么救
前端·后端·ai编程
颜进强4 小时前
19 · NestJs @Global 落地账:装饰器与 `isGlobal` 参数,各在什么场景上岗
前端·后端·ai编程
码艺-Alimjan4 小时前
Tauri 网站To桌面应用实战总结
前端·javascript·vue
颜进强4 小时前
18 · NestJS动态模块与 forRoot:`imports: [ConfigModule.forRoot({...})]` 到底在 import 什么
前端·后端·ai编程