هو واحد من المبادئ التي تربك اغلب الأشخاص الذين
يتعلمون لغة جافا سكربت، وهي مهمة جدا لازم تفهمها وتتعلمها كويس جداً لان كل شغلك
تقريبا يعتمد عليها.
عشان تفهم ما هو ال Promise
لازم أول تفهم كيف تشتغل او تعمل الجافا سكربت؟
الجافا سكريبت في طريقة تشغيلها الطبيعية فهي
تقوم بتنفيذ الكود سطر سطر وتسمى هذه العملية بي
Interpreted , إذا كل واحد فيهم يأخذ زمن
طويل في التنفيذ فهنا البرنامج يظل في وضع التنفيذ بدون ما يقدر ينفذ حاجة تانية
وتسمى هذه العملية Synchronousl Programming.
هل بهذا المفهوم هل لا أستطيع استخدام جافا
سكريبت في اي تطبيق؟
الحل هو أن نترك الكود الذ يأخذ زمن في التنفيذ Asynchronous كالمثال التالي
async function Student() {
Const name = await getStudentName() ;
}
في الدالة السابقة تركنا الدالة كلها async والجزء الذي يحتاج زمن ويستجلب
البيانات يبقى await
able ببساطة هنا بتقول للجافا سكريبت طالما الكود سوف
يأخذ وقت هنا فما توقف اي تنفيذ اي حاجة في التطبيق ويسمح بمناداة هذه الدالة من
مكان آخر وبرضو تبقى await لحد الوصول إلى أنه هذه الجزئية تقدر تكمل التنفيذ.
طيب ما هو دور ال Promise
في الموضوع؟
الفكرة انه ال Promise
يحتوي على حالة status موضع التنفيذ هل هي خلصت fulfilled ولا هل هي rejected ،
ولو هي لسه شغالة في التنفيذ تكون الحالة Pending
في ال
Promise.
هنا ال Promise
بحل مشكلة ال
Callback Hell ال كانت موجودة في الجافا سكريبت والتي
تظهر الكود مزعج في عملية التعديل عليه، لكن من خلال ال Promise
بقدر أخلى إذا نجح التنفيذ. .then() و
إذا فشل التنفيذ.catch()