MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-survey

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

AbortSignal 接口表示一个信号对象( signal object ),它允许您通过 AbortController 对象与DOM请求(如Fetch)进行通信并在需要时将其中止。

属性

AbortSignal接口还继承了其父接口EventTarget的属性。

AbortSignal.aborted 只读
以 Boolean 表示与之通信的请求是否被终止(true)或未终止(false)。

事件处理

AbortSignal.onabort
abort 事件触发时,即当信号正在与之通信的DOM请求被中止时调用。

方法

AbortSignal接口从其父接口 EventTarget 继承方法。

示例

在以下片段中,我们旨在使用Fetch API下载视频。

我们首先使用AbortController()构造函数创建一个控制器,然后使用AbortController.signal属性。

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

var controller = new AbortController();
var signal = controller.signal;

var downloadBtn = document.querySelector('.download');
var abortBtn = document.querySelector('.abort');

downloadBtn.addEventListener('click', fetchVideo);

abortBtn.addEventListener('click', function() {
  controller.abort();
  console.log('Download aborted');
});

function fetchVideo() {
  ...
  fetch(url, {signal}).then(function(response) {
    ...
  }).catch(function(e) {
    reports.textContent = 'Download error: ' + e.message;
  })
}

注意: 当调用 abort() 时,fetch() 会调用 reject,返回一个AbortError。

你可以在GitHub上找到一个完整的可用示例——请参阅abort-api实例在这)。

规范

Specification Status Comment
DOM
AbortSignal
Living Standard Initial definition

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support No1657 No No No
aborted No1657 No No No
onabort No1657 No No No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support No No1657 No No ?
aborted No No1657 No No ?
onabort No No1657 No No ?

参见

文档标签和贡献者

 此页面的贡献者: Ende93, yuyx91, Feahter
 最后编辑者: Ende93,