Web/API/AbortController

From Get docs


The AbortController interface represents a controller object that allows you to abort one or more Web requests as and when desired.

You can create a new AbortController object using the AbortController.AbortController() constructor. Communicating with a DOM request is done using an AbortSignal object.

Constructor

AbortController()
Creates a new AbortController object instance.

Properties

AbortController.signal Read only
Returns a AbortSignal object instance, which can be used to communicate with/abort a DOM request.

Methods

AbortController.abort()
Aborts a DOM request before it has completed. This is able to abort fetch requests, consumption of any response Body, and streams.

Examples

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 a DOMException named AbortError.


You can find a full working example on GitHub — see abort-api ([[../../../../../../mdn.github.io/dom-examples/abort-api/index|see it running live also]]).

Specifications

Specification Status Comment
DOMThe definition of 'AbortController' in that specification. Living Standard Initial definition

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

AbortController

Experimental'

Chrome

Full support 66

Edge

Full support 16

Firefox

Full support 57

IE

No support No

Opera

Full support 53

Safari Full support 12.1


Full support 12.1


Partial support 11.1

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

WebView Android

Full support 66

Chrome Android

Full support 66

Firefox Android

Full support 57

Opera Android

Full support 47

Safari iOS Full support 12.2


Full support 12.2


Partial support 11.3

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

Samsung Internet Android

Full support 9.0

AbortController() constructor

Experimental'

Chrome

Full support 66

Edge

Full support 16

Firefox

Full support 57

IE

No support No

Opera

Full support 53

Safari Full support 12.1


Full support 12.1


Partial support 11.1

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

WebView Android

Full support 66

Chrome Android

Full support 66

Firefox Android

Full support 57

Opera Android

Full support 47

Safari iOS Full support 12.2


Full support 12.2


Partial support 11.3

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

Samsung Internet Android

Full support 9.0

abort

Experimental'

Chrome

Full support 66

Edge

Full support 16

Firefox

Full support 57

IE

No support No

Opera

Full support 53

Safari Full support 12.1


Full support 12.1


Partial support 11.1

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

WebView Android

Full support 66

Chrome Android

Full support 66

Firefox Android

Full support 57

Opera Android

Full support 47

Safari iOS Full support 12.2


Full support 12.2


Partial support 11.3

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

Samsung Internet Android

Full support 9.0

signal

Experimental'

Chrome

Full support 66

Edge

Full support 16

Firefox

Full support 57

IE

No support No

Opera

Full support 53

Safari Full support 12.1


Full support 12.1


Partial support 11.1

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

WebView Android

Full support 66

Chrome Android

Full support 66

Firefox Android

Full support 57

Opera Android

Full support 47

Safari iOS Full support 12.2


Full support 12.2


Partial support 11.3

Notes'

Notes' Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.

Samsung Internet Android

Full support 9.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
See implementation notes.'
See implementation notes.


See also