संपादित करें : बैकग्राउंड रिक्वेस्ट अभी भी बैकग्राउंड में चल रही होगी और संभवतः आपके कंसोल में एक एरर लॉग करेगी।
वास्तव में Promise.race
दृष्टिकोण बेहतर है।
संदर्भ के लिए यह लिंक देखें Promise.race ()
रेस का मतलब है कि सभी वादे एक ही समय पर चलेंगे, और जैसे ही कोई एक वादा वापस करता है, रेस बंद हो जाएगी। इसलिए, केवल एक मान लौटाया जाएगा । आप यह भी कह सकते हैं कि यदि भ्रूण समय से बाहर हो तो कॉल करने के लिए एक फ़ंक्शन पारित कर सकता है।
fetchWithTimeout(url, {
method: 'POST',
body: formData,
credentials: 'include',
}, 5000, () => { });
यदि यह आपकी रुचि को प्रभावित करता है, तो एक संभावित कार्यान्वयन होगा:
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;
});
}