This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The AbortSignal interface represents a signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object.
The AbortSignal interface also inherits properties from its parent interface, EventTarget.
AbortSignal.aborted Read only
Boolean that indicates whether the request(s) the signal is communicating with is/are aborted (true) or not (false).AbortSignal.onabortabort 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.
Current version of Firefox rejects the promise with a DOMException
You can find a full working example on GitHub — see abort-api (see it running live also).
| Specification | Status | Comment |
|---|---|---|
| DOM The definition of 'AbortSignal' in that specification. | Living Standard | Initial definition |
| Desktop | ||||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
| Basic support | 66 | 16 | 57 | No | 53 | 11.1 |
aborted
|
66 | 16 | 57 | No | 53 | 11.1 |
onabort
|
66 | 16 | 57 | No | 53 | 11.1 |
| Mobile | |||||||
|---|---|---|---|---|---|---|---|
| Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
| Basic support | 66 | 66 | 16 | 57 | 53 | 11.1 | No |
aborted
|
66 | 66 | 16 | 57 | 53 | 11.1 | No |
onabort
|
66 | 66 | 16 | 57 | 53 | 11.1 | No |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal