DÜZENLEME : Getirme isteği arka planda çalışmaya devam edecek ve büyük olasılıkla konsolunuzda bir hata kaydedecektir.
Aslında Promise.race
yaklaşım daha iyidir.
Promise.race () referansı için bu bağlantıya bakın
Yarış, tüm Vaatlerin aynı anda çalışacağı ve vaatlerden biri bir değer verir vermez yarışın duracağı anlamına gelir. Bu nedenle, yalnızca bir değer döndürülür . Getirme zaman aşımına uğrarsa çağırmak için bir işlev de iletebilirsiniz.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Bu ilginizi çekerse, olası bir uygulama şöyle olacaktır:
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;
});
}