このインターフェースは一つ以上のリクエストをいつでも中断することを可能にするコントローラー オブジェクトを表します。
AbortController.AbortController() コンストラクターを使うことで AbortController オブジェクトを新しく作ることができます。DOM リクエストとの送信は、AbortSignal オブジェクトを使って行われます。
この後の短いコードで、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; }) }
Note: abort() が呼ばれると、fetch() promise は AbortError と呼ばれる DOMException で失敗します。
GitHub で完全に動作する例を見ることができます ― abort-api(または、実際に動作する様子)を参照してください。
表示内容: |
表示内容: |