【问题标题】:AbortController does not cancel axios.getAbortController 不取消 axios.get
【发布时间】:2023-02-20 23:07:08
【问题描述】:

我正在尝试使用 AbortController 取消 API 调用。对于通话,我使用的是 axios。为了测试如何取消呼叫,我在将其实现到我的项目之前尝试使用此呼叫:

const c = new AbortController();
const r = axios.get("https://www.google.com:81",{signal: c.signal});
c.abort();

但是当我测试这个代码示例时,我的请求没有中止(它只是超时,这是正常的,但它应该在超时之前中止,因为我没有等待)。 有人看到我的错误在哪里吗?也许我还没有完全理解使用 AbortController 的方式,但是这个代码示例对我来说听起来不错。

【问题讨论】:

  • 是什么让你认为它没有被取消?在什么环境下?什么版本的 Axios? (因为 Axios 过去只使用它自己的取消形式,但现在是supports both。)它对我使用 Chromium 浏览器有效:i.stack.imgur.com/dyDyO.png
  • 我也在使用 Chromium 浏览器(谷歌浏览器)。当我查看网络中的 DevTools 时,我发现我的请求在一段时间后超时,而且我没有看到任何“已取消”或“已中止”的地方
  • 我用的axios是1.3.3版本的,没想到可能是版本问题
  • 不知道该告诉你什么。这将有一个时间因素,但问题中的代码似乎是可靠的:jsfiddle.net/tjcrowder/yc6amLh2 尝试过 Vivaldi、Chrome、Chromium、Brave 和 Firefox(当然是非 Chromium :-))。
  • 上面链接的页面说他们在 v0.22.0 中开始支持AbortController,所以那个版本应该没问题。

标签: javascript vue.js vuejs2 axios


【解决方案1】:

当我使用 fetch 而不是 axios 时,它运行良好。我真的不明白为什么,但我想我会用这个代替

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2020-02-21
    • 2021-07-31
    • 2019-02-10
    • 2022-11-08
    • 2020-05-08
    • 2023-01-20
    • 2020-02-15
    • 2021-10-21
    相关资源
    最近更新 更多