首页 > 解决方案 > 如何在 AbortController.abort() 之后启动另一个请求?

问题描述

我已经阅读了有关使用AbortController.abort()取消获取请求的信息。有没有办法在调用此命令后再次启动请求而不中止它?

例如,在MDN 的这个演示中,一旦单击取消下载,单击下载视频将再次触发提取,但会立即中止。

有没有办法再次允许这个请求而不中止它?那么,在这种情况下,如何单击“下载视频”开始下载,单击“取消下载”取消下载,然后再次单击“下载视频”重新开始下载?例如,如果用户意外点击取消下载...

标签: asynchronoushttprequestfetchabort

解决方案


例如,在 MDN 的这个演示中,一旦点击取消下载,点击下载视频将再次触发提取,但立即中止。

他们修正了这个例子。单击后,Cancel download您将能够开始新的下载并一次又一次地取消它。为了实现每次都Download button实例化一个新的AbortController,因此您每次都会获得一个新的中止信号:

downloadBtn.addEventListener('click', fetchVideo);

function fetchVideo() {
  controller = new AbortController;
  signal = controller.signal;
  // ...

因此,可以为您可能希望取消的每个请求实例化新的 AbortControllers。


推荐阅读