axios 或 fetch 如何实现对发出的请求的终止?

终止 HTTP 请求是一个重要的功能,特别是在需要优化性能、避免不必要的请求或在某些事件发生时(例如用户点击取消)中断正在进行的请求时。以下是如何使用 axiosfetch 实现请求终止的方法:

1. axios

axios 使用了 CancelToken 来支持取消请求。

以下是使用 axios 取消请求的例子:

javascript 复制代码
const axios = require('axios');

// 创建一个 CancelToken 的源
const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('https://api.example.com/data', {
  cancelToken: source.token
}).catch(function(thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // 处理其他错误
  }
});

// 在需要时取消请求
source.cancel('Operation canceled by the user.');

2. fetch

对于原生的 fetch API,你可以使用 AbortControllersignal 属性来取消请求。

以下是使用 fetch 取消请求的示例:

javascript 复制代码
const controller = new AbortController();
const signal = controller.signal;

fetch('https://api.example.com/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(err => {
    if (err.name === 'AbortError') {
      console.log('Fetch aborted');
    } else {
      console.error('Fetch error: ', err);
    }
  });

// 在需要时取消请求
controller.abort();

这里,AbortController 和它的 signalfetch 请求相关联。当调用 controller.abort() 时,与该 signal 关联的 fetch 请求将被中断。

总的来说,不论是使用 axios 还是 fetch,都提供了取消正在进行的 HTTP 请求的能力。这在某些场景下(例如页面卸载或用户取消操作时)能够避免不必要的后续操作或错误处理。

相关推荐
半花2 分钟前
i18n国际语言化配置
前端
编程贝多芬5 分钟前
Promise 的场景和最佳实践
前端·javascript
Asort6 分钟前
JavaScript 从零开始(四):基础语法详解——从变量声明到数据类型的完全指南
前端·javascript
木木jio8 分钟前
前端大文件分片上传 —— 基于 React 的工程化实现
前端·javascript
南雨北斗12 分钟前
JS的对象属性存储器
前端
Lotzinfly12 分钟前
12个TypeScript奇淫技巧你需要掌握😏😏😏
前端·javascript·面试
一个大苹果13 分钟前
setTimeout延迟超过2^31立即执行?揭秘JavaScript定时器的隐藏边界
javascript
开源之眼17 分钟前
React中,useState和useReducer有什么区别
前端
普郎特28 分钟前
"不再迷惑!用'血缘关系'彻底搞懂JavaScript原型链机制"
前端·javascript
可观测性用观测云37 分钟前
前端错误可观测最佳实践
前端