Promise.race: بهترین روش برای اجرای محدودیت زمانی در Promises. ⏳

هر زمان که یک درخواست Promise اتفاق بیفتد، معمول است که یک تایم اوت داشته باشد. اگر از محدودیت زمانی تجاوز شود، درخواست را لغو میکند و خطای مهلت زمانی ایجاد میکند.
چگونه آن بازگشت را پیاده سازی می کنید؟ استفاده می کنید setTimeout? یا در بدترین حالت از آن استفاده می کنید performance.now برای محاسبه اینکه آیا درخواست از محدودیت زمانی فراتر رفته است؟
اینجاست که Promise.race طبق MDN:
این
Promise.race()روش static یک تکرار از وعده ها را به عنوان ورودی می گیرد و یک تک را برمی گرداندPromise.
همانطور که از نام آن پیداست، تکرارپذیر (مانند آرایه) of را فعال می کند Promise اشیاء، و هر کدام سریعتر حل شود، برگردانده می شود.
بنابراین، با استفاده از Promise.race، می توانید با حداقل کد یک محدودیت زمانی را پیاده سازی کنید.
// Where fn is the promise, and
// ms is the time limit in milliseconds
function timeLimit(fn, ms) {
const fallback = new Promise((_, reject) => {
setTimeout(() => {
reject("Time limit exceeded");
}, ms);
});
return Promise.race([fn, fallback]);
}
این تابع به طور همزمان اجرا می کند fn استدلال و fallback وعده. این fallback وعده ایجاد مهلت با ms به عنوان زمان تاخیر لذا بعد از زمان تأخیر قول را رد می کند.
از آنجا که Promise.race اولین وعده را برای اتمام باز می گرداند، "Time limit exceeded" رد را می توان برگرداند اگر fn قولش دیره
برعکس، اگر fn زودتر تمام شود، نتیجه خود را، چه حل شده یا رد شده، برمی گرداند.
خودشه. با تشکر از شما برای خواندن! آیا می خواهید به این پست واکنش نشان دهید؟



