بعد مقدمة قصيرة للوعود في المحاضرة السابقة،
دعونا ننتقل إلى التمرين التالي حيث
سنستخدم الوعود ضمن تطبيقنا الزاوي. على
وجه الخصوص، تعد الوعود طريقة أساسية للتعامل مع التأخيرات خاصة
عندما تحتاج إلى الوصول إلى البيانات والحصول عليها من خادم
قبل تسليمها إلى المكون من خلال خدمتك.
لذا، غالباً ما تعيد الخدمات الوعود إلى
المكونات عندما تستدعي المكونات أساليب الخدمة،
وبعد ذلك عندما
يحل الوعد، فإن المكونات ستكون لها النتائج المتاحة لها.
سنقوم بإعادة تكوين الخدمات التي لدينا داخل
تطبيقنا الزاوي للعودة
الوعود وبعد ذلك سنقوم بإعادة تكوين
مكوناتنا لتكون قادرة على التعامل مع الوعود.
الخطوة الأولى في هذا التمرين هي إعادة تكوين جميع الخدمات للعودة الوعود.
لذلك كل من الطرق داخل خدمتنا بدلا من إرجاع
القيمة على الفور سوف يعود الوعود.
لذا، كيف يمكننا تكوين خدماتنا للعودة الوعود؟
لذلك، والذهاب إلى ملف dishservice.ts،
فإن طريقة getDuses هنا ستعود وعد بدلا من صفيف الطبق.
لذلك، نقوم بتكوين طريقة getDuses للعودة
الوعد عن طريق إرفاق كائن الطبق هذا داخل الوعد.
ما يعنيه هذا هو أنه إذا حل الوعد، فإن النتيجة
التي يتم تسليمها بواسطة وعد GetDubishes ستكون مجموعة أطباق.
لذلك، داخل المكون الخاص بك
سوف تتلقى مجموعة طبق إذا كان الوعد النتائج بشكل صحيح.
الآن بعد أن قمنا بتكوين GetDuses لإرجاع وعد،
نحتاج إلى إعادة تكوين الشفرة
بحيث يتم إرجاع مجموعة الأطباق هذه كجزء من الوعد.
الآن بما أن لدينا النتيجة متاحة بالفعل لنا،
سأستخدم طريقة الاختصار
لإعادة الوعد من خلال حل الوعد على الفور.
الآن من الواضح أن هذا يعمل بشكل جيد إذا كان لديك النتائج المتاحة على الفور معك.
ولكن، عند إعادة تكوين الخدمة الخاصة بك
لتكون قادرة على الذهاب وجلب هذه البيانات من خادم،
ثم سيكون لدينا لإعادة كتابة هذا الرمز للتعامل مع حقيقة أن
الخدمة لن ترجع النتيجة
على الفور بدلا من ذلك سيكون لديك إلى الانتظار لبعض الوقت.
في التمرين التالي،
سنقوم بمحاكاة التأخير باستخدام طريقة جافا سكريبت بحيث يمنحك
شعورًا بما يعنيه التعامل مع التأخير في تلقي نتيجة من وعد.
الآن بعد أن قمنا بتكوين getDuses لإرجاع الوعد،
وبالمثل، سنقوم بإعادة تكوين الطريقتين المتبقيتين.
لذلك أنا ذاهب لنسخ هذا الوعد من
هنا ومن ثم ببساطة إرفاق هذا إلى اثنين المتبقية هناك،
حتى يتسنى لي تحويلها أيضا للعودة
الوعود وبعد ذلك بالطبع كل ما
لدينا هنا يجب أن تكون مغلقة داخل عزم الوعد.
لذلك أنا ذاهب فقط لنسخ عزم الوعد
وأرفق هذا داخل العزم هنا.
وبالمثل، بالنسبة للطبق المميز، سأرفق هذا داخل عزم الوعد.
الآن، يتم تكوين خدمة الطبق الخاص بي للعودة الوعود.
من الواضح أن هذا يعني أيضًا أنني بحاجة إلى الانتقال إلى
مكوناتي ثم إعادة تكوين المكونات لتكون قادرة
على التعامل مع حقيقة أنها لا تتلقى البيانات
على الفور بدلاً من ذلك فإنها تتلقى وعدًا
ثم سيتعين عليها تنفيذ الطريقة
التي الوعد عندما النتائج سوف يسلم البيانات لك.
لذلك، الآن بعد أن قمنا بتكوين خدمة الطبق،
ونحن نعرف مكان واحد حيث يتم استخدام الخدمة بنشاط وهذا هو مكون القائمة.
لذلك اسمحوا لي أن تظهر لكم كيف سنقوم بإعادة تكوين
المكون لتكون قادرة على التعامل مع الوعد.
لذلك عندما تذهب إلى menucomponent.ts
ستلاحظ على الفور أن هناك خط أحمر متعرج تحت الأطباق لأنه،
كما ترون، الآن،
dishService.GetDuses يعود وعد ثم هنا لديك،
والوعد الذي يتم تعيينه إلى كائن صفيف طبق وهذا ليس صحيحا.
كيف يمكننا إعادة تكوين هذا الرمز؟
لذلك، كما ذكرت،
عندما نقوم بإعادة تكوين التعليمات البرمجية،
نحن بحاجة إلى تنفيذ ثم والصيد ل getDusies.
لذلك، اسمحوا لي أن المضي قدما وتنفيذ فقط ثم في هذه اللحظة،
لطريقة getDuses لأنه يمكن تنفيذ الصيد في وقت لاحق.
الآن نحن نعلم أن الوعد سوف تحل دائما بشكل صحيح،
لذلك سنقوم بتنفيذ الطريقة ثم هنا
، وبعد ذلك، داخل الطريقة ثم،
وسوف تتلقى كائن الأطباق القادمة عندما يحل الوعد.
وعندما يكون هذا هو كائن الأطباق يأتي كمعلمة،
لذلك ترى أنني أكتب وظيفة السهم هنا،
أنا فقط ذاهب لقطع ذلك وتضمين ذلك الحق هناك.
ها أنت ذا هذه هي الطريقة التي يمكن أن
يأخذ بها المكون الخاص بك الآن الوعد ثم استرداد النتائج عندما يتم حل الوعد.
يمكنك أن ترى أن لدينا DishService getDubishs ثم
تتغير الطريقة إليه وحيث عندما يتم استدعاء ثم،
عندما يحل الوعد من الجانب الآخر،
ثم سيتم تسليم الأطباق لك
لأن طريقة getDubishes تعود وعد ولكن النتيجة ستكون مجموعة أطباق.
هذا صفيف الطبق يأتي كمعلمة هنا لذلك أنا أكتب وظيفة السهم
هنا حيث أنا تعيين أن هذه الأطباق للأطباق.
لذلك، عندما يحل هذا الوعد ثم
سيتم تعيين الأطباق لهذه الأطباق. هذا كل شيء.
الآن مكون القائمة الخاص بي جاهز للتعامل مع الوعد.
بالطبع، للتعامل مع الخطأ تحتاج أيضا إلى
سلسلة طريقة الصيد في طريقة getDuses.
لذا، فإن ثم والصيد هما الطرق
التي يوفرها الوعد لك وهكذا تقوم بتنفيذ ذلك
والتي ستوفر فيها الوظيفة التي تتعامل مع
الوضع عندما يحل الوعد أو عندما يرفض الوعد بوجود خطأ.
الآن وبالمثل، يجب علينا إعادة تكوين طريقة تفاصيل الطبق
وأيضا المكون الرئيسي للتعامل مع حقيقة أن
ديشسرفيس هو الآن تقديم وعود بدلا من تقديم القيم على الفور.
بينما نحن في ذلك،
ونحن قد كذلك إعادة تشكيل كل من الزعيم وخدمة الترويج أيضا.
لذلك سأترك الأمر كممارسة لك لإكمال،
وتحديث كل من خدمة القائد وخدمة الترويج لتكون قادرة على
تقديم الوعود المقابلة.
أيضا، وبالتالي، سيكون لديك لإعادة تكوين
رمز البرنامج النصي نوع المكون في المكون حول في مكون تفاصيل الطبق،
في المكون الرئيسي للتعامل مع حقيقة أنك
تتلقى الآن وعود بدلا من النتائج الفعلية.
لذلك سوف تسمح لك إكمال هذا الجزء بدلا من توضيح كل ذلك بالتفصيل،
لقد أظهرت لك خطوة واحدة مع مكون تفاصيل الطبق.
الرجاء إكمال الخطوات مع كل من القائد وخدمة الترويج،
ثم قم بتكوين المكونات المقابلة وفقًا لذلك.
اسمحوا لي أن المشي بسرعة لكم من خلال التحديثات التي تحتاج إلى إكمال.
حتى كما ترون خدمة القادة لقد قمت بتحديث بالفعل مع الوعد.
كما ترون هنا،
تم تحديث جميع الطرق الآن للعودة
الوعود تماما مثل الطريقة التي فعلناها مع ديشسرفيس.
وبالمثل، فإن خدمات الترويج تحديث أيضا
للعودة الوعود من جميع الأساليب هناك.
الآن، بالانتقال إلى المكون،
سترى أنه في المكون حول أيضًا قمنا بتكوين
لتلقي القيم داخل الوعد هناك.
وبالمثل، في مكون تفاصيل الطبق ستلاحظ أنني قمت
بإعادة تكوين هذا للتعامل مع الوعد هناك.
وبالمثل، في المكون الرئيسي،
ستلاحظ أنه داخل المكون الرئيسي
تم تحديث جميع الطرق الثلاث هنا: GetFeatureDish، FeatureDPromession، و FeatureDLeader،
مع ثم تعلق على كل واحد منهم للتعامل مع الوعد.
الرمز مشابه إلى حد كبير لما قمت بتوضيحه مع مكون القائمة.
بمجرد إكمال هذا،
دعونا نلقي نظرة سريعة على طلبنا.
الذهاب إلى التطبيق لدينا في المتصفح،
فإنك لن ترى أي فرق في التطبيق.
وهو يعمل بالضبط بنفس الطريقة كما كان من قبل،
إلا أنه الآن يستخدم الوعود عندما
يتم تنفيذ الخدمات ومكوناتك
تتعامل مع الوعود عندما يتم حلها.
وبالتالي فإن عنصر القائمة تعمل بشكل صحيح
وأيضا عنصر التفاصيل طبق تعمل أيضا بشكل صحيح.
مع هذا، نكمل هذا التمرين.
في هذا التمرين، رأينا كيف تمكنا من ترقية خدماتنا
لتقديم الوعود، كما قمنا بتحديث مكوناتنا لتكون قادرة على التعامل مع الوعود.
و هذا يكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع الرسالة «الوعد جزء واحد».