把握哀求控制权:Axios 如何取消哀求的两种方法

打印 上一主题 下一主题

主题 797|帖子 797|积分 2391

在前端开发中,网络哀求黑白常常见的利用。而有时间,我们可能须要在发送哀求后取消它,比如用户在哀求还未完成时离开了当前页面或者执行了其他利用,本文将介绍如安在利用 Axios 发送哀求时取消这些哀求。


根本概念

在 Axios 中,取消哀求的根本思绪是创建一个用于取消的标记(cancel token),并将其与特定哀求关联。当须要取消哀求时,我们可以利用这个标记通知 Axios 取消发送该哀求。
取消哀求的写法

1. 利用 Cancel Token

Axios 提供了 CancelToken 类来创建取消标记。取消标记实际上是一个包含 cancel 方法的对象。以下是取消哀求的一般步骤:
  1. // 在首先需要引入相关库和模块
  2. import axios from 'axios';
  3. // 创建取消标记
  4. const source = axios.CancelToken.source();
  5. // 发送请求并关联取消标记
  6. axios.get('/api/data', {
  7.   cancelToken: source.token
  8. }).then(response => {
  9.   // 请求成功处理
  10. }).catch(error => {
  11.   if (axios.isCancel(error)) {
  12.     console.log('请求被取消', error.message);
  13.   } else {
  14.     console.log('请求出错', error.message);
  15.   }
  16. });
  17. // 取消请求
  18. source.cancel('请求取消的原因');
复制代码
2. 利用哀求设置

除了利用 CancelToken,你也可以在哀求设置中直接提供 cancelToken 属性来关联取消标记:
  1. const source = axios.CancelToken.source();
  2. axios.get('/api/data', {
  3.   cancelToken: source.token
  4. }).then(response => {
  5.   // 请求成功处理
  6. }).catch(error => {
  7.   // 错误处理
  8. });
  9. // 在需要的时候取消请求
  10. source.cancel('请求取消的原因');
复制代码
实践案例

假设我们要在 React 中发送一个数据哀求,用户在哀求发出后点击了“取消”按钮。起首,我们须要创建一个可取消的 Axios 实例,并将其用于发送哀求。
  1. import React, { useState } from 'react';
  2. import axios from 'axios';
  3. function App() {
  4.   const [data, setData] = useState('');
  5.   const [request, setRequest] = useState(null);
  6.   const fetchData = async () => {
  7.     const source = axios.CancelToken.source();
  8.     setRequest(source);
  9.     try {
  10.       const response = await axios.get('/api/data', {
  11.         cancelToken: source.token
  12.       });
  13.       setData(response.data);
  14.     } catch (error) {
  15.       if (axios.isCancel(error)) {
  16.         console.log('请求被取消', error.message);
  17.       } else {
  18.         console.log('请求出错', error.message);
  19.       }
  20.     }
  21.   };
  22.   const cancelRequest = () => {
  23.     if (request) {
  24.       request.cancel('手动取消请求');
  25.     }
  26.   };
  27.   return (
  28.     <div>
  29.       <button onClick={fetchData}>发送请求</button>
  30.       <button onClick={cancelRequest}>取消请求</button>
  31.       <div>{data}</div>
  32.     </div>
  33.   );
  34. }
  35. export default App;
复制代码
提示与留意事项



  • 确保在组件卸载时取消哀求,以免造成内存泄漏。
  • 取消标记只能取消尚未完成的哀求,无法取消已经完成的哀求。
  • 取消标记只能在特定的哀求上利用一次,一旦利用过,就须要重新创建。
利用 Apifox 来 Mock 数据

Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter,Apifox 支持调试 http(s)、WebSocket、Socket、gRPCDubbo 等协议的接口,并且集成了 IDEA 插件。在后端人员写完服务接口时,测试阶段可以通过 Apifox 来校验接口的正确性,图形化界面极大的方便了项目标上线服从。
更为紧张的是,Apifox 能够 Mock 数据,其集成了 Mock.js 库,答应你自界说规则,并且可以编写脚本,强大的 Mock 功能可以让前端开发人员不再苦苦等待后端提供接口,自己就能提前造各种各样的数据出来,可视化利用让你点点鼠标就能生成可观的人性化数据。


总结

通过利用 Axios 提供的取消标记,我们可以在发送哀求后随时取消哀求,以制止不须要的网络流量和资源浪费。这为我们在前端开发中处理用户利用的停止提供了便利。
末了感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完备的备战堆栈,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


这些资料,对于【软件测试】的朋友来说应该是最全面最完备的备战堆栈,这个堆栈也伴随上万个测试工程师们走过最艰难的旅程,盼望也能帮助到你! 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表