جافاسكربتالبرومس
- مفهوم البرومس
- خطوات إنشاء برومس و تنفيذه
- مثال عملي حول البرومس
- معالجة جميع أخطاء البرومس
- المزيد حول بناء البرومس
مفهوم البرومس
الوعد أو البرومس ( Promise ) هو كائن و فيه دالة أوامرها تتنفذ بشكل متزامن، حيث أنه يكون متوقع أن تكون بحاجة لبعض الوقت حتى تتنفذ و ترجع النتيجة في النهاية. و في كلا الحالتين فإنك قادر على ترقب و معالجة ما سترجعه لك.
مفسّر الكود لا يقف عند تنفيذ البرومس، بل يكمل تننفيذ باقي الأوامر الموجودة بعده و يكون بذات الوقت يترقب النتيجة التي سيرجعها حتى يعالجها.
في هذا الدرس ستتعلم طريقة إنشاء برومس جديد، طريقة تنفيذه، و طريقة معالجة النتائج التي يرجعها.
خطوات إنشاء برومس و تنفيذه
بشكل عام، كائن البرومس يتم بناؤه بواسطة الكونستركتور new Promise() و الحصول على نتيجته يتم من خلال استدعاء الدالة then() منه.
أسلوب إنشاء البرومس أمر قد تجده معقد جداً لأنه لا يشبه الطرق السابقة التي اعتدت على اتباعها في كتابة الكود، و لهذا سنشرحه على خطوات و من ثم نضع لك الشكل العام لإنشائه.
الآن سنقوم بتعريف دالة إسمها fetchData() مهمتها إنشاء و تنفيذ البرومس عندما يتم استدعاءها.
الخطوة الأولى
الآن سنجعل الدالة fetchData() ترجع برومس جديد بواسطة الكونستركتور new Promise().
الخطوة الثانية
الآن سنحدد كيف سيتم إرجاع قيمة من البرومس مع تحديد ما إن كانت قيمة سليمة أم أنها قيمة تشير للخطأ الذي وقع عند تنفيذ البرومس.
في حال تم تمرير القيمة إلى الدالة resolve() فإنه سيتم إرجاعها من البرومس كقيمة سليمة، و في حال تم تمرير القيمة إلى الدالة reject() فإنه سيتم إرجاعها من البرومس كخطأ.
الخطوة الثالثة
في النهاية لتنفيذ أوامر البرومس علينا استدعاء الدالة fetchData()، و للحصول على نتيجتها علينا استدعاء الدالة then() منها.
الخطوة الأخيرة
أسماء الدوال resolve و reject و أسماء المتغيرات value و error استخدمناها لأن معناها يشير لما تقوم به و لكن يمكنك تبديلها بأسماء أخرى إن أردت ذلك.
مثال عملي حول البرومس
في المثال التالي قمنا بإنشاء برومس يعطينا رقم عشوائي بين 1 و 10 بعد مرور ثانية واحدة.
الرقم الذي يعطينا إياها سنعتبره مقبولاً إن كان أكبر أو يساوي 5، و سنعتبره مرفوضاً إن لم يكن كذلك.
نتيجة تنفيذ البرومس سنعرضها باللون الأخضر إن كانت مقبولة، و باللون الأحمر إن لم تكن كذلك.
مثال
معالجة جميع أخطاء البرومس
في حال أردت معالجة جميع الأخطاء التي قد تحدث عند تنفيذ البرومس و ليس فقط التي تحددها أنت بواسطة الدالة reject() فيمكنك إستدعاء الدالة catch() مباشرةً بعد استدعاء الدالة then().
مثال
المزيد حول بناء البرومس
في حال كان البرومس سيرجع فقط قيم مقبولة فإنه لا داعي أن يتم وضع الدالة reject() فيه ليصبح الشكل العام له كما يلي.
مثال
عند تنفيذ البرومس، يمكنك استخدام الدالة catch() تحسباً لعالجة أي خطأ قد يحدث.
في المثال التالي قمنا ببناء برومس يرجع قيمة عشوائية بين 1 و 10 عندما يتم تنفيذه.