فرض کنید API شما گاهی ۱۰ ثانیه طول میکشد.
اما UI فقط تا ۳ ثانیه میتواند منتظر بماند.
اینجاست که
()Promise.race میتواند مفید باشد.مثلاً:
const timeout = new Promise((_, reject) => {
setTimeout(() => {
reject(new Error("Request timeout"));
}, 3000);
});
await Promise.race([
fetch("/api/products"),
timeout
]);هرکدام زودتر اتفاق بیفتد، نتیجه مشخص میشود:
⚡حالا API پاسخ دهد ← ادامه بده.
⏱️ سه ثانیه تمام شود ← Timeout.
البته برای پروژه واقعی بهتر است از
AbortController هم برای متوقف کردن خود Request استفاده کنید.🎯 قابلیت Timeout فقط یک قابلیت UX نیست؛ بخشی از طراحی سیستمهای مقاوم است.
💡 هیچ API نباید بدون محدودیت زمانی منتظر یک سرویس خارجی بماند.
@CodeVerse_dev