EDIT : Permintaan pengambilan akan tetap berjalan di latar belakang dan kemungkinan besar akan mencatat kesalahan di konsol Anda.
Memang Promise.race
pendekatannya lebih baik.
Lihat tautan ini untuk referensi Promise.race ()
Balapan berarti semua Janji akan berjalan pada waktu yang sama, dan balapan akan berhenti segera setelah salah satu Janji mengembalikan nilai. Oleh karena itu, hanya satu nilai yang akan dikembalikan . Anda juga bisa meneruskan fungsi untuk dipanggil jika waktu pengambilan habis.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Jika ini menarik minat Anda, penerapan yang mungkin adalah:
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;
});
}