CHỈNH SỬA : Yêu cầu tìm nạp sẽ vẫn chạy trong nền và rất có thể sẽ ghi lại lỗi trong bảng điều khiển của bạn.
Quả thực là Promise.race
cách tiếp cận tốt hơn.
Xem liên kết này để tham khảo Promise.race ()
Cuộc đua có nghĩa là tất cả các Lời hứa sẽ chạy cùng một lúc và cuộc đua sẽ dừng lại ngay khi một trong các Lời hứa trả về giá trị. Do đó, chỉ một giá trị sẽ được trả về . Bạn cũng có thể chuyển một hàm để gọi nếu quá trình tìm nạp hết thời gian.
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
Nếu điều này thu hút sự quan tâm của bạn, một triển khai khả thi sẽ là:
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;
});
}