BEARBEITEN : Die Abrufanforderung wird weiterhin im Hintergrund ausgeführt und protokolliert höchstwahrscheinlich einen Fehler in Ihrer Konsole.
In der Tat ist der Promise.race
Ansatz besser.
Siehe diesen Link als Referenz Promise.race ()
Rennen bedeutet, dass alle Versprechen gleichzeitig ausgeführt werden und das Rennen beendet wird, sobald eines der Versprechen einen Wert zurückgibt. Daher wird nur ein Wert zurückgegeben . Sie können auch eine Funktion übergeben, die aufgerufen werden soll, wenn beim Abrufen eine Zeitüberschreitung auftritt.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Wenn dies Ihr Interesse weckt, wäre eine mögliche Implementierung:
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;
});
}