AbortController: abort() 方法

基线 广泛可用

此功能已得到良好建立,可在许多设备和浏览器版本上运行。自以下日期起,它已在所有浏览器中可用 2019 年 3 月.

注意:此功能在Web 工作线程中可用。

abort() 方法是 AbortController 接口的方法,用于在异步操作完成之前中止该操作。它可以中止 提取请求、任何响应体的使用或流。

语法

js
abort()
abort(reason)

参数

reason 可选

操作中止的原因,可以是任何 JavaScript 值。如果未指定,则原因设置为“AbortError” DOMException

返回值

无 (undefined)。

示例

在以下代码段中,我们的目标是使用 Fetch API 下载视频。

我们首先使用 AbortController() 构造函数创建一个控制器,然后使用 AbortController.signal 属性获取其关联的 AbortSignal 对象的引用。

启动 提取请求 时,我们在请求的选项对象(下面的 {signal})中将 AbortSignal 作为选项传入。这将信号和控制器与提取请求关联起来,并允许我们通过调用 AbortController.abort() 来中止它,如下面的第二个事件侦听器中所示。

js
const controller = new AbortController();
const signal = controller.signal;

const url = "video.mp4";
const downloadBtn = document.querySelector(".download");
const abortBtn = document.querySelector(".abort");

downloadBtn.addEventListener("click", fetchVideo);

abortBtn.addEventListener("click", () => {
  controller.abort();
  console.log("Download aborted");
});

function fetchVideo() {
  fetch(url, { signal })
    .then((response) => {
      console.log("Download complete", response);
    })
    .catch((err) => {
      console.error(`Download error: ${err.message}`);
    });
}

注意:调用 abort() 时,fetch() promise 会拒绝,并抛出一个类型为 DOMException、名称为 AbortErrorError

您可以在 GitHub 上找到完整的可运行示例;您还可以看到它 在线运行

规范

规范
DOM 标准
# ref-for-dom-abortcontroller-abortcontroller①

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅