AbortController: abort() 方法
注意:此功能在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
、名称为 AbortError
的 Error
。
您可以在 GitHub 上找到完整的可运行示例;您还可以看到它 在线运行。
规范
规范 |
---|
DOM 标准 # ref-for-dom-abortcontroller-abortcontroller① |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。