لقد تعلمنا للتو عن الجحيم الاتصال
وكيف يمكن أن تمكننا الوعود من التغلب على هذه المسألة.
ونحن نعلم أن برنامج تشغيل العقدة MongoDB يدعم أصلا الوعود.
لذلك، إذا لم تقم بتحديد رد اتصال،
فستعود المكالمات إلى وظائفها الوعود.
لذلك، سنقوم بتحديث طلبنا للاستفادة من الوعود
لتجنب قضية الجحيم رد التي تعلمناها للتو في المحاضرة السابقة.
بالعودة إلى تطبيقنا،
مرة أخرى أخذ نظرة أخرى على سبب تطور الجحيم رد في شفرتنا.
لاحظ أنه هنا عندما نفذنا العمليات،
لدينا عملية واحدة ثم داخل رد الاتصال من هذه العملية،
ثم نحن بحاجة إلى بدء العملية التالية وداخل
رد الاتصال من هذه العملية نحن نبدأ العملية التالية وهلم جرا.
لذلك ينتهي بك المطاف مع هذا الهرم مثل الهيكل هنا.
عملية واحدة داخل رد اتصال آخر وداخل رد الاتصال.
الآن، هذا الرمز قريبا جدا الحصول على غير عملي ومعقد لفهم.
لهذا السبب نريد تحويل هذا الرمز باستخدام
دعم الوعد الذي يوفره Mongo DB Driver بالفعل
لنا حتى نتمكن بدلاً من استخدام الوعود
بدلاً من استخدام وظائف رد الاتصال كما فعلنا في هذا التمرين.
بالطبع، فعلت الإصدار السابق فقط لتوضيح لك كيف يمكننا
الهبوط مع الجحيم رد وكيف يمكننا استخدام الوعود للتغلب على هذه المسألة.
لذلك، قبل أن نقوم بتحديث ملف index.js،
اسمحوا لي أن أذهب إلى العمليات.jsfile وبعد ذلك سنقوم بتحديث هذا أولا.
حتى هنا، ستلاحظ أنه عندما ندعو هذه الوظيفة هنا،
ونحن نمر في المعلمة الثانية التي هي وظيفة رد الاتصال هنا.
لذا، لأننا سنستخدم الوعود هنا
لذلك أنا فقط ذاهب لحذف وظيفة رد الاتصال هذه وبعد ذلك
لأن هذه المكالمة إلى إدراج سيعود على أي حال الوعود،
أنا فقط ذاهب للعودة الوعد من هذه الوظيفة.
لذا لاحظ كيف تم تبسيط الشفرة.
وبالمثل بالنسبة للثانية،
سأقوم ببساطة بإزالة وظيفة رد الاتصال هذه
ثم إرجاع الوعد الذي
يتم إرجاعه بواسطة هذا ومن ثم سنتعامل مع ذلك في التعليمات البرمجية في index.js.
وبالمثل بالنسبة لحذف واحد أيضا،
وأنا ذاهب لإزالة رد الاتصال ثم العودة هذا الحادث وأيضا لuptade.
للتحديث، سنقوم بإزالة رد الاتصال الذي قدمناه
هنا ثم إرجاع الوعد.
وبهذه الطريقة،
ستعود جميع هذه الوظائف الأربع الوعد الذي تم إرجاعه بالفعل
بواسطة هذه المكالمات إلى وظائف برنامج تشغيل MongoDB.
الآن بمجرد الانتهاء من ذلك،
دعونا نعود إلى index.js.
في index.js، سأقوم بتحديث هذه الوظيفة مرة أخرى هنا.
لذا فإن استخدام الوعود سيقول MongoClient.Connect (url) وبعد ذلك
سنقوم باستبدال هذا بالقول «ثم» وهذا يتلقى فقط db كمعلمة لها.
وداخل هنا، سنتعامل مع بقية وأيضا
يمكننا أن نلاحظ أن هذه الوظيفة معينة تغلق «ثم» هنا والوعد،
والجزء الثاني إلى الوعد،
يمكننا التعامل مع الخطأ.
يمكننا أن نقول consolelog.
حتى نتمكن من استخدام الصيد من الوعد أيضا للقبض على الأخطاء.
وبهذه الطريقة، لقد اشتعلنا الأخطاء.
الآن، دعونا تحسين التعليمات البرمجية داخل هنا.
حتى داخل هنا نقوم بإجراء عملية دب إدراج وثيقة،
وبدلا من استدعاء هذه الوظيفة هنا،
ما سأقوم به هو تحويل هذا إلى «ثم» هنا.
لذلك أنا ذاهب لإغلاق هذا ويقول. ثم النتيجة.
حتى داخل تلك النتيجة،
ونحن في طريقنا لطباعة سجل وحدة التحكم وبعد ذلك.
لذلك أنا ذاهب لإغلاق هذا قبالة هنا وبعد ذلك سنقوم
بإغلاق «ثم» هنا وبعد ذلك
سيتم إرفاق هذا مرة أخرى «ثم» هنا.
لذلك ترى أنني أقوم بتسلسل اثنين من «thens»
واحد إلى الآخر هنا ثم داخلنا ثم،
سنقوم بعمل سجل وحدة التحكم ثم سنقوم بعودة العملية التالية.
ولكن بعد ذلك، لهذه العملية،
سأقوم بإغلاق هذا وإغلاق هذا
ثم ثم
سيتم التعامل مع هذه المكالمة مرة أخرى الآن داخل وظيفة «ثم» هنا.
لذا لاحظ كيف لديك الوظيفة الأولى وفي «ثم» نحن ندعو
dboper العثور على الوثائق والتي ستعود وهذا سيعود وعد.
هذا الوعد سيتم التعامل معه من قبل هذا
لذلك نحن تسلسل اثنين من ثينس معا ثم مرة أخرى تسلسل واحد أكثر «ثم» هنا.
اسمحوا لي أن إعادة اختراع رمز هنا وبعد ذلك سوف نعود هذا هنا وهذا
مرة أخرى سوف تغلق وإغلاق أن «ثم»
ثم يتم وضع هذا داخل المقبل «ثم»
وسوف ندعو الوظيفة التالية هنا «أن
Db.DropCollection ('أطباق' وإغلاق «هذا ثم» والقادم هنا.
سنتعامل مع «ثم» من النتيجة هنا.
إرجاع dbclose وكل
هذه هنا يمكن إزالتها الآن لأنها لم تعد هناك حاجة إليها.
ثم أخيرا إذا كان هناك خطأ سوف قبض على الخطأ هذه الوظيفة.
لذلك أنا فقط ذاهب لنسخ هذا ومن ثم لصقه هنا. هذا هو
مع هذا التغيير الآن،
يكون التعامل مع شفرتك أسهل بكثير هنا.
حتى كما ترون،
لديك mongoClient.Connect الذي
يعود وعد وداخل التعامل مع هذا الوعد،
انهم استدعاء هذه الأساليب واحدا تلو الآخر
كل منهم يعود الوعد ثم كنت تسلسل لهم باستخدام.
هذا الهيكل وتر هو أسهل بكثير لمتابعة من ما كنا قد نفذناه في وقت سابق.
لذا باستخدام الوعود قمنا بتحويله حرفيًا ثم تجنبنا
جحيم رد الاتصال الذي رأيناه في الإصدار السابق من هذا التطبيق.
لذلك دعونا حفظ التغييرات على كل من
index.jsn.operation.js ثم نلقي نظرة على هذا التطبيق.
مرة أخرى الذهاب إلى المحطة،
في نوع موجه «نبم
ستارت» وسوف ترى أن التطبيق الخاص بك يعمل تماما كما كان من قبل
، فإنه يدرج المستند، يجد
المستند،
تحديث المستند ثم يجد المستند المحدث ثم يغلق قاعدة بيانات الفعل.
لذلك باستخدام الوعود قمنا بإعادة هيكلة التعليمات البرمجية لتكون أكثر سهولة
وتجنب الجحيم رد الذي رأيناه في الإصدار السابق من هذا التطبيق.
مع هذا، نكمل هذا التمرين.
في هذا التمرين، رأيت كيف يمكننا الاستفادة
من الوعود لتجنب الجحيم رد.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع
الجحيم رد الرسالة والوعد.