--- title: AbortSignal slug: Web/API/AbortSignal tags: - API - AbortSignal - DOM - インターフェース - リファレンス - 実験的 translation_of: Web/API/AbortSignal ---
{{APIRef("DOM")}}{{SeeCompatTable}}
AbortSignal
インターフェイスは DOM 要求 (Fetch など) と通信し、必要に応じて {{domxref("AbortController")}} オブジェクトを介して中断することを可能にするシグナルオブジェクトを表します。
AbortSignal インターフェイスはまた、親のインターフェースである、 {{domxref("EventTarget")}} からプロパティを継承しています。
true
) が中断している 、(false
) は中断していないを表します。addEventListener()
を使うかこのインターフェースの oneventname
プロパティにイベントリスナーを割り当てることでこのイベントへのアクセスに待機します。
abort
onabort
プロパティを介して利用可能です。AbortSignal インターフェースは親インタフェースである、{{domxref("EventTarget")}} からメソッドを継承します。
この後の短いコードで、Fetch API を使用してビデオをダウンロードします。
まず {{domxref("AbortController.AbortController","AbortController()")}} コンストラクターを使ってコントローラーを生成し、{{domxref("AbortController.signal")}} プロパティを使用して関連する {{domxref("AbortSignal")}} オブジェクトへの参照を取得します。
読み込みリクエスト が初期化すると、リクエストのオプションオブジェクト (下記 {signal}
を参照) の内部のオプションとして AbortSignal
を渡します。これによりシグナルと読み込みリクエストのコントローラーは関連付き、{{domxref("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 (または 実際に動作する様子 を参照) を参照してください。
仕様書 | ステータス | コメント |
---|---|---|
{{SpecName('DOM WHATWG', '#interface-AbortSignal', 'AbortSignal')}} | {{Spec2('DOM WHATWG')}} | 初回定義 |
{{Compat("api.AbortSignal")}}