【问题标题】:Only pass to then, if axios request is not cancelled?如果 axios 请求没有被取消,只传递给 then?
【发布时间】:2020-10-28 04:32:19
【问题描述】:

我取消了一个 axios 调用,然后使用 catch 捕获它以显示一条消息。

在此之后,我链接了一个then(),但即使我取消请求,也会调用then()

如何才能使then() 仅在请求未被取消时才被调用?

【问题讨论】:

标签: javascript axios


【解决方案1】:

如果没有太多上下文,您的问题很难回答。但是,如果我理解正确,我认为您正在寻找的是延迟 axios 请求并等待几秒钟以确保在发送请求之前它没有被取消。这称为并发方法。使用setTimeout() 将等待一段时间,然后再运行其中的任何代码。确保用户不会向您的端点发送垃圾请求并等待最新和最近的请求并将其返回(如果您决定将整个请求包装在超时中)也是非常好的:

return axios.get('your-end-point').then(response => setTimeout(response, 1000))); 

注意:这里的 1000 是 1000 m/s。您可以将此值更改为更长或更短,具体取决于您希望等待的时间。

在此处查看有关 setTimeout 和并发的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

【讨论】:

  • 与问题完全无关。
  • 也许可以尝试为您的问题提供更多背景信息。我想这就是为什么你没有其他答案,而我只是在四处走动。看看这个链接:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 这能回答你的问题吗?如果是这样,我将创建一个新的答案来解释如何实施。只是未来的提示,代码示例对于完全可视化您的问题非常有用
猜你喜欢
  • 1970-01-01
  • 2021-08-30
  • 2020-01-30
  • 2020-06-16
  • 2021-02-20
  • 2020-03-05
  • 2021-12-19
  • 2017-10-14
  • 2020-10-17
相关资源
最近更新 更多