EDITAR : La solicitud de recuperación seguirá ejecutándose en segundo plano y lo más probable es que registre un error en su consola.
De hecho, el Promise.race
enfoque es mejor.
Vea este enlace para referencia Promise.race ()
Carrera significa que todas las promesas se ejecutarán al mismo tiempo y la carrera se detendrá tan pronto como una de las promesas devuelva un valor. Por lo tanto, solo se devolverá un valor . También puede pasar una función para llamar si se agota el tiempo de recuperación.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Si esto despierta su interés, una posible implementación sería:
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;
});
}