أصبحت Promise.try الآن متوفّرة في الإصدار الأساسي

Jeremy Wagner
Jeremy Wagner

تاريخ النشر: 17 كانون الثاني (يناير) 2025

قد يكون من الصعب تنفيذ مهام غير متزامنة على الويب، ويتضمن الكثير من الإجراءات التي يتم تنفيذها على الويب مهامًا غير متزامنة. سواء كان ذلك يتضمن طلبات fetch أو عمليات غير متزامنة أخرى، تسهِّل المتصفّحات طريقة تنفيذ هذه المهام عندما توفّر الطُرق المضمّنة معالجة فعّالة للأخطاء. سبق أن تم توفير هذا الإجراء لـ Promises باستخدام الطرق then وcatch وfinally.

ومع ذلك، يجب أن تكون طريقة تصميم قاعدة بيانات تطبيقك مرنة، وليس كل ما ستفعله في تطبيقك غير متزامن بالضرورة. قد تحتاج أحيانًا إلى معالجة نتيجة طلب معاودة الاتصال بطريقة أبسط إذا لم يكن مهمًا ما إذا كان طلب معاودة الاتصال الذي تم تمريره إلى Promise متزامنًا أم لا. Promise.try هي طريقة متاحة الآن في جميع محركات المتصفّحات الرئيسية التي تبسّط ذلك للمطوّرين، ما يعني أنّها أصبحت الآن متاحة في Baseline.

ما هو 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."));

ماذا لو كانت دالة ردّ الاتصال تحتوي على وسيطات؟ يمكنك إجراء ذلك بطريقتَين:

// 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.try معالجة الأخطاء بشكلٍ سليم لأي طلب استدعاء يتم تمريره إليه. للحصول على معلومات إضافية ومخاوف أو حالات استخدام محتملة أخرى، يمكنك الرجوع إلى مستندات MDN حول Promise.try.

الخاتمة

بعد أن وصل الإصدار Promise.try إلى الإصدار الأساسي "متاح حديثًا"، من المفترض أن يكون بإمكانك استخدامه في جميع محرّكات المتصفّحات الرئيسية. مع مرور الوقت، من المفترض أن تتمكّن من استخدام Promise.try في تطبيقات الويب مع زيادة الثقة بأنّه سيكون جزءًا ثابتًا وقابلاً للتشغيل التفاعلي من منصة الويب.