مقدمة
في الدرس السابق تعرفنا على البرمجة غير المتزامنة (Asynchronous Programming)، وعرفنا لماذا تحتاج JavaScript إلى طريقة للتعامل مع العمليات التي تستغرق وقتًا.
من أشهر الأدوات المستخدمة لهذا الغرض الوعود (Promises).
تساعدنا الـ Promises على التعامل مع نتيجة عملية غير متزامنة، سواء نجحت العملية أو حدث خطأ أثناء تنفيذها.
---
ما هو الـ Promise؟
الـ Promise هو كائن يمثل نتيجة عملية غير متزامنة.
عند إنشاء العملية قد لا تكون النتيجة جاهزة بعد، ولذلك يمكن أن تكون في إحدى الحالات الأساسية:
- Pending: العملية ما زالت قيد التنفيذ.
- Fulfilled: العملية اكتملت بنجاح.
- Rejected: العملية فشلت.
---
لماذا نستخدم Promises؟
بدلًا من كتابة طريقة معقدة للتعامل مع العمليات غير المتزامنة، توفر Promises طريقة أكثر تنظيمًا للتعامل مع النتائج.
وهذا مفيد خصوصًا عند التواصل مع الخوادم أو جلب البيانات من الإنترنت.
---
نجاح العملية
عندما تنتهي العملية بنجاح، يمكن للبرنامج الحصول على النتيجة والتعامل معها.
وهذا يسمح باستخدام البيانات التي تم الحصول عليها في الخطوات التالية من البرنامج.
---
فشل العملية
قد لا تنجح العملية دائمًا.
قد يحدث خطأ أثناء الاتصال بالخادم أو أثناء تنفيذ العملية.
لذلك توفر Promises طريقة للتعامل مع حالات الفشل بدلًا من ترك الخطأ يسبب مشاكل في البرنامج.
---
التسلسل باستخدام Promises
في بعض البرامج قد نحتاج إلى تنفيذ عدة عمليات غير متزامنة بالتتابع.
يمكن استخدام Promises لتنظيم هذه العمليات بحيث تبدأ العملية التالية بعد الحصول على نتيجة العملية السابقة.
وهذا يجعل التعامل مع العمليات المتتابعة أكثر وضوحًا.
---
Promises في تطبيقات الويب
تستخدم Promises بكثرة في تطبيقات الويب، خصوصًا عند التعامل مع:
- طلبات الإنترنت.
- APIs.
- الخوادم.
- تحميل البيانات.
- العمليات التي تستغرق وقتًا.
---
العلاقة بين Promises و async/await
تعتبر "async/await" طريقة أسهل لكتابة الكود الذي يعتمد على Promises.
فهي تسمح بكتابة العمليات غير المتزامنة بطريقة تبدو أكثر ترتيبًا وتسلسلًا، مع بقاء التنفيذ غير متزامن.
وسنتعرف عليها بشكل أعمق في دروس لاحقة.
---
فوائد Promises
توفر Promises العديد من المزايا، منها:
- تنظيم العمليات غير المتزامنة.
- التعامل مع النجاح والفشل.
- تسهيل تنفيذ العمليات المتتابعة.
- تحسين وضوح الكود.
- استخدامها بشكل واسع في JavaScript الحديثة.
---
أخطاء شائعة عند المبتدئين
من الأخطاء التي يقع فيها المبتدئون:
- عدم التعامل مع حالة فشل العملية.
- الخلط بين Promise والنتيجة النهائية للعملية.
- محاولة استخدام النتيجة قبل اكتمال العملية.
- إنشاء سلاسل معقدة من العمليات دون تنظيمها.
لذلك من المهم فهم حالات الـ Promise الثلاث قبل الانتقال إلى "async/await".
---
ملخص الدرس
تعرفنا في هذا الدرس على Promises في JavaScript، وعرفنا أنها تمثل نتيجة عملية غير متزامنة، وتعرفنا على حالات Pending وFulfilled وRejected، كما فهمنا أهميتها في التعامل مع البيانات والعمليات التي تستغرق وقتًا.
في الدرس الحادي والثلاثون سنتعرف على "async/await"، وسنفهم كيف يمكن استخدامها لكتابة كود غير متزامن بطريقة أكثر وضوحًا وتنظيمًا.



