[MUSIC]
عندما كنا نتحدث عن الخدمات في الوحدة السابقة، كنت قد ذكرت
عن الوعود ثم وعدت بأنني سوف أعود إلى الوعود في هذه الوحدة.
لذا، ها نحن ذا سأوفي بوعدي لك
حساب متزامن هو في جميع أنحاء المكان في شبكة الإنترنت العالمية.
وكيف تعمل شبكة الإنترنت.
إذا كنت قادمًا من عالم البرمجة المتسلسل، فإن
التفاف رأسك حول حساب متزامن يستغرق قدمًا كبيرًا من الجهد.
كانت هناك العديد من المحاولات لجعل الحساب غير المتزامن غير مؤلم
قدر الإمكان للأشخاص الذين ينتقلون إليه من كتاب الحساب المتسلسل.
إحدى هذه المحاولات هي جعل الحساب غير المتزامن
أسهل في تحقيقه هو الوعود.
كما ندرك، عندما نقدم أي طلب إلى أي
خدمة أو إلى خادم الخلفية،
سيستغرق الأمر بعض الوقت حتى تصبح النتائج متاحة لنا.
إذا فعلنا مثل هذا الطلب أثناء المضي قدما في عملنا،
ثم هناك احتمال كبير أن حسابنا سوف تتعثر في هذه النقطة،
في انتظار النتائج.
هذا هو لا لا من حيث القيام بتجربة مستخدم جيدة.
لذا من المهم أنه كلما استغرقت نتائجك وقتًا،
يجب أن تكون قادرًا على المضي قدمًا دون انتظار القواعد.
وهذا هو المكان الذي يأتي الحساب غير المتزامن لصالحك.
في الحساب غير المتزامن عند إرسال طلب،
تتوقع أن تعود النتائج في وقت لاحق،
ويجب أن تكون قادرًا على التعامل مع الحقيقة، تعود النتائج الأساسية في وقت
متأخر بكثير عن المكان الذي كنت فيه عند تقديم الطلب.
الوعود توفر لنا طريقة للتعامل مع هذا.
دعونا ننظر إلى الوعود بمزيد من التفصيل في هذه المحاضرة.
وبعد ذلك سنرى أيضًا استخدام الوعود
في تطبيقنا الزاوي قليلاً في وقت لاحق.
وعود، والمفهوم العام هو مساحة واسعة جدا في حد ذاته.
وفي هذه الدورة، ليس لدي الوقت لأخوض في تفاصيل الوعود.
هذا سيصبح مسار كامل في حد ذاته
سأعطيك فقط أساسيات الوعود الضرورية
لنا لفهم كيفية الاستفادة من الوعود في تطبيقنا الزاوي.
أنا أقدم لك الكثير من الخيوط إلى
موارد إضافية حيث يمكنك الذهاب ودراسة الوعود بمزيد من التفصيل.
اذا اذا اذا انزل الى هذا السؤال, ما هو الوعد بالضبط؟
الوعد هو آلية تدعم الحساب غير المتزامن.
أنا فقط أعطيت تفسيرا طويلا متعرجا لماذا الحساب غير المتزامن
ضروري للويب للعمل.
الآن، في استخدام الوعد، يوفر الوعد
آلية أو بروكسي لقيمة غير متوفرة في اللحظة التي تطلب منها ذلك.
لذا فإن الوعد سيعود لك وعدًا، قائلا
إنه عندما تصبح النتيجة متاحة، فسوف يعود ويسلم لك النتائج.
لذا، يقوم الوعد بإرجاع كائن وكيل إليك، وتتمسك بكائن الوكيل.
وسيمنحك هذا الكائن الوكيل إمكانية الوصول إلى النتائج عندما تصبح متاحة.
وهناك طريقة في كيفية انتظار النتائج.
أنت في الواقع لا تعلق الحساب الخاص بك في هذه المرحلة بدلا من ذلك يمكنك
تكوين طريقة لقبول النتائج عندما يعود من هذا الوعد.
باختصار،
يمثل الوعد قيمة ستكون متاحة في وقت لاحق.
قد يكون متاحًا أيضًا على الفور
، وفي هذه الحالة سيعيد الوعد القيمة على الفور.
ولكن في حالة الحاجة إلى إرجاع قيمة في تاريخ مستقبلي، فإنه يعطيك
الوعد بأن هذه القيمة عندما تصبح متاحة سيتم إعادتها إليك.
و هناك دائما إمكانية لعدم الوفاء بالوعد,
لأن النتائج غير متاحة لأي سبب من الأسباب.
في هذه الحالة، سيتم تسليم خطأ لك، أو سيتم تسليم رفض
لك، والأمر متروك لك للتعامل مع حقيقة أن الوعد قد رفض.
ونحن ننظر إلى كيفية التعامل مع ذلك في الشريحة التالية.
وكما علمنا من قبل، فإن الوعد هو وكيل
لشيء ما كان سيحدث في المستقبل أو قد لا يحدث أبدا في المستقبل.
لذلك وعد عندما تعطى لك، سيكون في حالة معلقة.
الآن عندما يحل الوعد، وهذا هو النتائج تصبح متاحة
والوعد قادر على تقديم النتائج لك، ثم الوعد سوف تحل أو
سوف تفي.
وفي هذه الحالة سينتقل الوعد من الحالة المعلقة إلى العزم أو
حالة الوفاء.
حتى في هذه المرحلة النتائج الخاصة بك متاحة لك.
هناك احتمال طفيف أن يتم رفض الوعد بسبب خطأ،
أو أيا كان السبب.
في هذه الظروف البعيدة،
سيتم تسليمك رفض وفي هذه الحالة، سيتم
اعتبار الوعد في الحالة المرفوضة عند تسليم الرفض.
لذلك، عندما تقوم بإنشاء وعد، كما قلت
، الوعد هو كائن وكيل يتم تسليمه لك.
لذلك، عندما تقدم وعدا لشخص ما، فإن الوعد داخليا سيكون له
وظيفة من شأنها أن تتعامل مع كل من التصميم
والخيارات الرفض داخل هناك.
عند كتابة التعليمات البرمجية،
سترى أنك ستكتب التعليمات البرمجية كوعد جديد (وظيفة (حل، رفض).
لذا سواء حل الأمر أو تم رفضه، يجب أن نكون قادرين على إرسال
المعلومات إلى من أوصلنا الوعد إليه.
كيف نفعل ذلك في التعليمات البرمجية؟
دعونا نلقي نظرة على ذلك في الشريحة التالية.
في ما يلي مثال على كيفية تكوين الوعد في التعليمات البرمجية.
في الواقع، هذا المثال مشتق من التمرين الذي ستفعله
بعد ذلك بقليل.
حتى هنا، عندما نقوم بتكوين خدمتنا، يمكننا أن
نجعل خدمتنا تعيد وعد إلى مكون يطلب البيانات من الخدمة.
لذلك عندما يتم إرجاع الوعد،
فإن وعد العودة متاح لك ككائن.
وهذا الوعد يوفر طريقتين، ثم طريقة الصيد.
الآن، ثم، يتم حل الوعد بنجاح.
ثم الوعد سيؤدي
إلى الدعوة إلى العزم.
كما رأيت، يتم بناء الوعد، وداخل الوعد،
لديك وظيفة، والعزم، ورفض، كمعلمتين.
لذلك إذا كان الوعد قادرًا على تقديم النتيجة بنجاح،
فسيقوم باستدعاء طريقة التصميم ثم إرجاع النتيجة إليك.
أين تحصل النتيجة على الواقع؟
عند كتابة التعليمات البرمجية
في انتظار الوعد، فإنك تحدد ما يجب القيام به عندما يقوم الوعد بإرجاع النتيجة
في الخيار ثم لهذا الوعد.
لذلك أقول على سبيل المثال، كنت أقول getdishes.Then وداخل ذلك الحين
سوف توفر وظيفة من شأنها أن تتعامل مع النتيجة عندما يتعلق الأمر.
إذا لم يكن الوعد قادرًا على حلها بشكل صحيح
، فسيرفض مع إرسال الخطأ إليك.
الخطأ كونه كائن خطأ سيتم إرساله مرة أخرى إليك.
لذلك عندما يتم رفض وعدهم، فإنك تتعامل مع
الرفض باستخدام الصيد داخل شفرتك.
حتى داخل الصيد، سوف توفر وظيفة من شأنها أن تتعامل مع الخطأ.
على سبيل المثال، يمكنك ببساطة إخراج رسالة الخطأ
وسجل وحدة التحكم والتعامل مع الخطأ بهذه الطريقة.
أو قد يكون لديك طريقة أكثر تفصيلاً للتعامل مع الخطأ.
سيتم توفير ذلك في خيار catch الذي تعطيه لرمز الوعد هذا
على جانبك عندما يسلم الوعد رفضًا لك.
إذن هكذا يتعامل الجانبان للعملة مع الوعود.
من جانب واحد، يتم إرسال كائن وعد،
وعندما تتلقى كائن الوعد، مع كائن الوعد، يمكنك إما القيام بذلك
ثم والصيد، لذلك من المفترض أن تنفذ كل من ذلك الحين
ومقاييس الصيد تغيرت إلى كائن الوعد هذا.
وبعد ذلك، من هذا الوعد جانبا، إذا كان الوعد النتائج بشكل صحيح،
ثم سيتم استدعاء العزم وبالتالي، سيتم تسليم النتيجة
في الطريقة ثم من وعدك.
إذا تم رفض الوعد،
فستؤدي مكالمة الرفض إلى تسليم الخطأ في المصيد الخاص بك.
إذن هذه هي الطريقة التي ستنفذ بها التعليمات البرمجية باستخدام الوعود.
نتعامل مع المثال في التمرين الذي يتبع هذه المحاضرة.
الآن من الواضح أن السؤال الذي أطرحه هو لماذا الوعود؟
في وقت لاحق، عندما نتعامل مع عقدة جس،
وسوف نتعامل مع كيف يمكننا بناء الاستدعاءات.
وسأشرح تفاصيل الاستدعاءات وطريقة التعامل مع
الاستدعاءات عندما نغطي عقدة JS في الدورة الأخيرة من هذا التخصص.
تحتوي عمليات الاسترجاعات على مشكلة في إنشاء ما يشار إليه باسم الجحيم رد.
لذلك لديك رمز رد اتصال متداخل بشكل كبير
معقد للغاية لتكون قادرة على معرفة ما تحاول القيام به.
توفر الوعود طريقة لمعالجة مشكلة الجحيم هذه.
ولكن في الوقت الحالي نحن نركز على Angular، سأذكر هذه النقطة فقط.
وبعد ذلك سنعود للتعامل مع هذا السؤال في المسار الأخير.
والميزة الأخرى لاستخدام الوعود هي أنه يمكن تغيير الوعود.
الوعد عندما يسلم النتيجة في سلة المهملات،
يمكنك توليد وعد آخر والعودة،
ويمكن التعامل مع هذا الوعد عن طريق تسلسل طريقة أخرى ثم لذلك وهلم جرا.
حتى تتمكن من سلسلة مجموعة من الأساليب ثم معا للتعامل مع
الوعود واحد وراء الآخر.
إذا كانت النتيجة متاحة على الفور أو إذا كنت سترفض على الفور،
فإن الوعد يوفر طريقة للعودة على الفور دون انتظار
الوعد إما حلها أو رفضها.
في هذه الحالة، سوف أقول ببساطة وعد مع رأس المال P.Resolf و
Promise.Rense ثم العودة إما النتيجة أو الخطأ على الفور.
في التمرين الأول، سنتعامل مع هذه الطريقة لإعادة القيمة
من خدمتنا إلى مكوناتنا.
في الجزء الثاني من التمرين، سنتعامل مع
الحالة التي سيحل فيها الوعد بعد فترة زمنية.
وأيضًا ضمن مكوننا، يجب أن نكون قادرين على التعامل مع حقيقة أن
النتائج تعود بعد قليل من الوقت الذي تطلب فيه النتيجة.
مع هذا الفهم السريع للوعود،
دعونا ننتقل إلى التمرين التالي حيث سنتعامل مع الوعود.
[ موسيقى]