تاریخ انتشار: 17 ژانویه 2025
انجام کارهای ناهمزمان بر روی وب می تواند چالش برانگیز باشد - و بسیاری از کارهایی که در وب انجام می شود شامل ناهمزمانی است. خواه این شامل تماسهای fetch
یا سایر عملیات ناهمزمان باشد، وقتی روشهای داخلی مدیریت خطای قوی را ارائه میدهند، نحوه انجام آن کار توسط مرورگرها آسانتر میشود. این قبلاً برای Promises با استفاده از متدهای then
، catch
و finally
ارائه شده است.
حتی در این صورت، روشی که در آن پایگاه کد برنامه خود را معماری میکنید باید انعطافپذیر باشد و هر کاری که در برنامه خود انجام میدهید لزوماً ناهمزمان نیست. گاهی اوقات ممکن است بخواهید نتیجه یک تماس برگشتی را به روشی ساده تر مدیریت کنید، اگر مهم نباشد که پاسخی که به یک Promise
ارسال کرده اید همزمان است یا نه. Promise.try
روشی است که اکنون در تمام موتورهای مرورگر اصلی موجود است که این کار را برای توسعه دهندگان ساده می کند، به این معنی که اکنون Baseline Newly در دسترس است.
Promise.try
چیست و چگونه کار می کند؟
Promise.try
یک روش راحت است که مدیریت خطا را برای توابع پاسخ به تماس همزمان آسان تر از زمانی است که از Promise.resolve
استفاده می کنید:
// If the callback is synchronous and it throws
// an exception, the error won't be caught here:
new Promise(resolve => resolve(callback());
// But it will be here:
Promise.try(callback);
سپس با استفاده از روش های then
، catch
و finally
، حل یا رد یک Promise
را مدیریت کنید:
Promise.try(callback)
.then(result => console.log(result))
.catch(error => console.log(error))
.finally(() => console.log("All settled."));
اگر تابع callback شما آرگومان داشته باشد چه؟ شما می توانید این کار را به یکی از دو روش انجام دهید:
// This creates an extra closure, but works:
Promise.try(() => callback(param1, param2));
// This doesn't create an extra closure, and still works:
Promise.try(callback, param1, param2);
مزیت اصلی استفاده از Promise.try
این است که به شما امکان می دهد از Promise یکسان استفاده کنید، صرف نظر از اینکه تماسی که به آن ارسال می کنید همزمان یا ناهمزمان است یا خیر. این به این معنی است که در مورد یک تابع ابزار که به یک Promise
که به طور گسترده در کد شما استفاده می شود، فراخوان ارسال می کند، استفاده از Promise.try
مدیریت صحیح خطا را برای هر پاسخی که به آن ارسال می کنید تضمین می کند. برای اطلاعات بیشتر و سایر نگرانیهای احتمالی یا موارد استفاده، به اسناد MDN برای Promise.try
مراجعه کنید.
نتیجه گیری
اکنون که Promise.try
به Baseline Newly در دسترس رسیده است، باید بتوانید از آن در همه موتورهای مرورگر اصلی استفاده کنید. با گذشت زمان، باید انتظار داشته باشید که بتوانید از Promise.try
در برنامه های وب خود با اطمینان بیشتر استفاده کنید که بخشی پایدار و قابل تعامل از پلتفرم وب خواهد بود.