EDITAR : A solicitação de busca ainda estará em execução em segundo plano e provavelmente registrará um erro em seu console.
Na verdade, a Promise.race
abordagem é melhor.
Veja este link para referência Promise.race ()
Corrida significa que todas as promessas serão realizadas ao mesmo tempo e a corrida será interrompida assim que uma das promessas retornar um valor. Portanto, apenas um valor será retornado . Você também pode passar uma função para chamar se a busca expirar.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Se isso despertar seu interesse, uma possível implementação seria:
function fetchWithTimeout(url, options, delay, onTimeout) {
const timer = new Promise((resolve) => {
setTimeout(resolve, delay, {
timeout: true,
});
});
return Promise.race([
fetch(url, options),
timer
]).then(response => {
if (response.timeout) {
onTimeout();
}
return response;
});
}