DOM

インターフェイス

AbortSignal インターフェイス

  編集:2022.04.03 by T.A.

MS

実験的: これは実験的な機能です。本番で使用する前にブラウザー互換性一覧表をチェックしてください。

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

プロパティ

AbortSignal インターフェイスはまた、親のインターフェースである、EventTarget からプロパティを継承しています。

AbortSignal.aborted 読取専用
シグナルが通信しているリクエスト(複数回も)が中断しているかを示す Boolean で、(true)が中断している、(false)は中断していないを表します。
メソッド

AbortSignal インターフェースは親インタフェースである、EventTarget からメソッドを継承します。

イベント

addEventListener() を使うかこのインターフェースの oneventname プロパティにイベントリスナーを割り当てることでこのイベントへのアクセスに待機します。

abort
シグナルが通信している DOM リクエスト(複数回も)の中断を呼び出す。

また onabort プロパティを介して利用可能です。

この後の短いコードで、Fetch API を使用してビデオをダウンロードします。

まず AbortController() コンストラクターを使ってコントローラーを生成し、AbortController.signal プロパティを使用して関連する AbortSignal オブジェクトへの参照を取得します。

読み込みリクエスト が初期化すると、リクエストのオプション オブジェクト(下記 {signal} を参照)の内部のオプションとして AbortSignal を渡します。これによりシグナルと読み込みリクエストのコントローラーは関連付き、AbortController.abort() を呼び出すことで下記の 2 つ目のイベントリスナーに見られるように中断が許可されます。

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() promise は AbortError で失敗します。

現在のバージョンの Firefox は、DOMException で失敗します。

GitHub で完全に動作する例を見ることができます ― abort-api(または 実際に動作する様子 を参照)を参照してください。


AbortSignal . abort()
AbortSignal インスタンスを返す ― その中止されたか は true に設定される。

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: