Cancelamento
AbortController
A partir da v0.22.0
, o Axios oferece suporte ao AbortController
para cancelar requisições em forma de API fetch.
const controller = new AbortController();
axios.get('/foo/bar', {
signal: controller.signal
}).then(function(response) {
//...
});
// cancela a requisição
controller.abort()
CancelToken descontinuado
Você pode cancelar uma requisição usando um cancel token.
O token de cancelamento do axios é baseado em retirada proposta de promessas canceláveis.
Você pode criar um token de cancelamento usando o CancelToken.source
conforme mostrado abaixo:
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
axios.get('/user/12345', {
cancelToken: source.token
}).catch(function (thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// manipulando erro
}
});
axios.post('/user/12345', {
name: 'new name'
}, {
cancelToken: source.token
})
// cancela a requisição (o parâmetro de mensagem é opcional)
source.cancel('Operação cancelada pelo usuário');
Você também poder criar um token de cancelamento passando uma função executora para o construtor de CancelToken
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// Uma função executora recebe uma função de cancelamento como parametro
cancel = c;
})
});
// cancela a requisição
cancel();
Nota: você pode cancelar multiplas requisições com o mesmo token de cancelamento.