Axios abort 哀求

打印 上一主题 下一主题

主题 1992|帖子 1992|积分 5976

一、Axios 哀求传参


  • 新建 AbortController 实例,该实例的 signal 作为 Axios 哀求的参数。
  • Axios 哀求中传入 signal。
  1. let abortController = new AbortController(), // Axios Controller 实例
  2. const config = {
  3.     requestParams,
  4.     headers,
  5.     timeout,
  6.     signal: abortController.signal,        // 传入的 signal
  7.     onUploadProgress,
  8. };
  9. // Get 请求
  10. this.axios
  11.   .get(url, config)
  12.   .then((res: any) => {
  13.     this.resultHandle(res, resolve, loading);
  14.   })
  15.   .catch((err: { message: any }) => {
  16.     reject(err.message);
  17.   });
  18. // Post 请求
  19. this.axios
  20.   .post(url, bodyParams, config)
  21.   .then((res: any) => {
  22.       this.resultHandle(res, resolve, loading);
  23.   })
  24.   .catch((err: any) => {
  25.       reject(err);
  26.   });
复制代码
二、abort 哀求

为防止 AbortController 实例非常,在外面加了 trycatch 捕获非常情况。
  1. try {
  2.     abortController && abortController.abort();
  3. } catch (error) {
  4.     console.log('Abort Error', error);
  5. }
复制代码
三、并行哀求 abort,和单个哀求 abort 用法同等。


  • abortController 实例只用创建一次
  • 每个哀求的参数中传入该实例的 signal
  • abort 方法调用一次,所有并行哀求都会 Cancel
四、非常情况

1. 单个哀求,接口无响应



  • 原因:abortController.signal.aborted 初始状态为 false, 此时不影响接口调用;

    当 abort() 调用后,该状态变成 true,这个状态下再次发哀求会无响应。

  • 解决方法:由于 abortController.signal.aborted 属性是只读属性,无法直接对该状态举行重置。
    但可以创建新实例,并赋值给 abortController  变量。达到更新 abortController.signal.aborted 状态目标,
    使得接口可以被再次调用。代码如下:
  1. abortController = new AbortController();
复制代码
2. 并行哀求,哀求接口无响应



  • 原因:与单个哀求同等,存在 abort() 方法被调用,状态变更。
  • 解决方法

    • 找到并行哀求开始执行的位置;
    • 在此之前,执行和 步调1 同等的代码即可更新状态;
    • 实例的 abortController.signal.aborted 状态被更新成 false,此时接口可以被正常调用;

五、总结


  • Axios abort 哀求,依赖于 AbortController 实例 abort() 方法。
  • 单个和并行哀求,只需创建一次 AbortController 实例。 abort() 哀求时,abort() 方法只需调用一次。
  • 在接口哀求之前更新 AbortController 实例,防止实例 abortController.signal.aborted 状态 true 时,导致的接口无响应。

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

尚未崩坏

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表