Esta é uma tecnologia experimental
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produção.

A interface AbortSignal  representa o sinal de um objeto que permite a você se comunicar com uma Requisição de DOM (como Fetch) e aborta-la se necessário via um objeto AbortController

Propriedades

A interface AbortSignal também herda propriedades de sua interface pai, EventTarget.

AbortSignal.aborted Somente leitura
Um Boolean que indica quando a(s) Request(s) com a qual o sinal está se comunicando está/estão abortadas(true) ou não(false).

Handlers de Eventos

AbortSignal.onabort
Invocado quando um abort evento dispara, ex: quando as requests do DOM que o sinal estão se comunicando são/estão abortadas.

Métodos

A interface AbortSignal também herda métodos de sua interface pai, EventTarget.

Exemplos

No exemplo de código a seguir, nós vamos focar em fazer download de um vídeo usando a Fetch API.

Nós primeiro criaremos um controller usando o construtor do AbortController(), e então pegar a referência de seu objeto AbortSignal associado usando a propriedade AbortController.signal.

Quando a requisição Fetch é iniciada, nós passamos o AbortSignal  como uma opção dentro do objeto de opções da request (veja {signal}, abaixo). Isso associa o sinal e o controller com a requisição fetch e nos permite aborta-la chamando AbortController.abort(), como visto abaixo no segundo 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;
  })
}

Nota: Quando abort() é chamado, a promessa do fetch() é rejeitada com um AbortError.

Você pode encontrar um exemplo completo no GitHub — veja abort-api (see it running live also).

Especificações

Especificação Status Comentário
DOM
The definition of 'AbortSignal' in that specification.
Padrão em tempo real Initial definition

Compatibilidade de Browser

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic support
Experimental
Chrome Full support 66Edge Full support 16Firefox Full support 57IE No support NoOpera Full support 53Safari Full support 11.1WebView Android Full support 66Chrome Android Full support 66Edge Mobile Full support 16Firefox Android Full support 57Opera Android Full support 53Safari iOS Full support 11.1Samsung Internet Android No support No
aborted
Experimental
Chrome Full support 66Edge Full support 16Firefox Full support 57IE No support NoOpera Full support 53Safari Full support 11.1WebView Android Full support 66Chrome Android Full support 66Edge Mobile Full support 16Firefox Android Full support 57Opera Android Full support 53Safari iOS Full support 11.1Samsung Internet Android No support No
onabort
Experimental
Chrome Full support 66Edge Full support 16Firefox Full support 57IE No support NoOpera Full support 53Safari Full support 11.1WebView Android Full support 66Chrome Android Full support 66Edge Mobile Full support 16Firefox Android Full support 57Opera Android Full support 53Safari iOS Full support 11.1Samsung Internet Android No support No

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.

Veja Também

Etiquetas do documento e colaboradores

Colaboradores desta página: MatheusCuba
Última atualização por: MatheusCuba,