axios abortcontroller取消请求无效
  xRXcseFEZ9Vg 2023年11月02日 66 0

使用Axios AbortController取消请求

流程图

flowchart TD
    A[创建 AbortController 实例] --> B[创建请求]
    B --> C[发送请求]
    C --> D[取消请求]

步骤说明

  1. 创建 AbortController 实例
  2. 创建请求,并将 AbortController 的 signal 作为配置项传入
  3. 发送请求
  4. 取消请求

代码实现

首先,你需要安装 axios 和 axios-abort-controller 包,以便在项目中使用 Axios 和 AbortController。

npm install axios axios-abort-controller

引入 axios 和 axios-abort-controller:

import axios from 'axios';
import { AbortController } from 'axios-abort-controller';

创建 AbortController 实例

在需要取消请求的地方,创建 AbortController 实例:

const abortController = new AbortController();

创建请求

使用创建的 AbortController 实例的 signal 属性作为请求的 cancelToken 配置项:

const { signal } = abortController;
const config = {
  url: '
  method: 'GET',
  cancelToken: signal.token,
};

发送请求

使用 axios 发送请求:

axios(config).then((response) => {
  // 处理请求成功的响应
}).catch((error) => {
  if (axios.isCancel(error)) {
    // 请求被取消的处理
  } else {
    // 处理其他错误
  }
});

取消请求

当需要取消请求时,调用 AbortController 实例的 abort() 方法:

abortController.abort();

完整示例

import axios from 'axios';
import { AbortController } from 'axios-abort-controller';

const abortController = new AbortController();

const { signal } = abortController;
const config = {
  url: '
  method: 'GET',
  cancelToken: signal.token,
};

axios(config).then((response) => {
  // 处理请求成功的响应
}).catch((error) => {
  if (axios.isCancel(error)) {
    // 请求被取消的处理
  } else {
    // 处理其他错误
  }
});

// 取消请求
abortController.abort();

解释

  1. 创建 AbortController 实例用于取消请求。
  2. 创建请求时,将 AbortController 的 signal 属性作为请求的 cancelToken 配置项,以便在需要时取消请求。
  3. 发送请求时,使用 axios 发送配置好的请求。
  4. 在请求被取消时,捕获到 axios 的 Cancel 错误,并进行相应的处理。
  5. 当需要取消请求时,调用 AbortController 实例的 abort() 方法。

总结

Axios AbortController 提供了一种简便的方式来取消请求。通过创建 AbortController 实例并将其 signal 属性作为请求的 cancelToken 配置项,可以在需要时取消请求。取消请求可以避免浪费不必要的网络资源,并提高应用的性能。在实际开发中,我们可以根据需要灵活地使用 Axios AbortController 来处理请求的取消。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: android相机权限 下一篇: axios post 解决跨域
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

xRXcseFEZ9Vg