Promise.try اکنون Baseline است به تازگی در دسترس است

جرمی واگنر
Jeremy Wagner

تاریخ انتشار: 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 در برنامه های وب خود با اطمینان بیشتر استفاده کنید که بخشی پایدار و قابل تعامل از پلتفرم وب خواهد بود.