この翻訳は不完全です。英語から この記事を翻訳 してください。

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

AbortSignal インターフェイスは DOM 要求 (Fetch など) と通信し、必要に応じて AbortController オブジェクトを介して中止することを可能にするシグナルオブジェクトを表します。

プロパティ

The AbortSignal interface also inherits properties from its parent interface, EventTarget.

AbortSignal.aborted 読取専用
A Boolean that indicates whether the request(s) the signal is communicating with is/are aborted (true) or not (false).

イベントハンドラ

AbortSignal.onabort
Invoked when an abort event fires, i.e. when the DOM request(s) the signal is communicating with is/are aborted.

メソッド

The AbortSignal interface inherits methods from its parent interface, EventTarget.

In the following snippet, we aim to download a video using the Fetch API.

We first create a controller using the AbortController() constructor, then grab a reference to its associated AbortSignal object using the AbortController.signal property.

When the fetch request is initiated, we pass in the AbortSignal as an option inside the request's options object (see {signal}, below). This associates the signal and controller with the fetch request and allows us to abort it by calling AbortController.abort(), as seen below in the second event listener.

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;
  })
}

Note: When abort() is called, the fetch() promise rejects with an AbortError.

現在のバージョンの Firefox は、DOMException で promise を拒否しています。

You can find a full working example on GitHub — see abort-api (see it running live also).

仕様

仕様書 ステータス コメント
DOM
AbortSignal の定義
現行の標準 初回定義

ブラウザの実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応
実験的
Chrome 完全対応 66Edge 完全対応 16Firefox 完全対応 57IE 未対応 なしOpera 完全対応 53Safari 完全対応 11.1WebView Android 完全対応 66Chrome Android 完全対応 66Edge Mobile 完全対応 16Firefox Android 完全対応 57Opera Android 完全対応 53Safari iOS 完全対応 11.1Samsung Internet Android 未対応 なし
aborted
実験的
Chrome 完全対応 66Edge 完全対応 16Firefox 完全対応 57IE 未対応 なしOpera 完全対応 53Safari 完全対応 11.1WebView Android 完全対応 66Chrome Android 完全対応 66Edge Mobile 完全対応 16Firefox Android 完全対応 57Opera Android 完全対応 53Safari iOS 完全対応 11.1Samsung Internet Android 未対応 なし
onabort
実験的
Chrome 完全対応 66Edge 完全対応 16Firefox 完全対応 57IE 未対応 なしOpera 完全対応 53Safari 完全対応 11.1WebView Android 完全対応 66Chrome Android 完全対応 66Edge Mobile 完全対応 16Firefox Android 完全対応 57Opera Android 完全対応 53Safari iOS 完全対応 11.1Samsung Internet Android 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: silverskyvicto
最終更新者: silverskyvicto,