1
00:00:00,000 --> 00:00:04,722
[MUSIC]

2
00:00:04,722 --> 00:00:10,212
عندما كنا نتحدث عن الخدمات في الوحدة السابقة، كنت قد ذكرت

3
00:00:10,212 --> 00:00:16,070
عن الوعود ثم وعدت بأنني سوف أعود إلى الوعود في هذه الوحدة.

4
00:00:17,360 --> 00:00:20,360
لذا، ها نحن ذا سأوفي بوعدي لك

5
00:00:22,090 --> 00:00:28,310
حساب متزامن هو في جميع أنحاء المكان في شبكة الإنترنت العالمية.

6
00:00:28,310 --> 00:00:31,410
وكيف تعمل شبكة الإنترنت.

7
00:00:32,880 --> 00:00:35,810
إذا كنت قادمًا من عالم البرمجة المتسلسل، فإن

8
00:00:37,040 --> 00:00:41,640
التفاف رأسك حول حساب متزامن يستغرق قدمًا كبيرًا من الجهد.

9
00:00:42,680 --> 00:00:48,570
كانت هناك العديد من المحاولات لجعل الحساب غير المتزامن غير مؤلم

10
00:00:48,570 --> 00:00:54,680
قدر الإمكان للأشخاص الذين ينتقلون إليه من كتاب الحساب المتسلسل.

11
00:00:56,850 --> 00:01:01,470
إحدى هذه المحاولات هي جعل الحساب غير المتزامن

12
00:01:01,470 --> 00:01:04,790
أسهل في تحقيقه هو الوعود.

13
00:01:06,040 --> 00:01:10,304
كما ندرك، عندما نقدم أي طلب إلى أي

14
00:01:10,304 --> 00:01:15,220
خدمة أو إلى خادم الخلفية،

15
00:01:16,530 --> 00:01:21,180
سيستغرق الأمر بعض الوقت حتى تصبح النتائج متاحة لنا.

16
00:01:22,550 --> 00:01:30,840
إذا فعلنا مثل هذا الطلب أثناء المضي قدما في عملنا،

17
00:01:30,840 --> 00:01:35,680
ثم هناك احتمال كبير أن حسابنا سوف تتعثر في هذه النقطة،

18
00:01:35,680 --> 00:01:37,890
في انتظار النتائج.

19
00:01:37,890 --> 00:01:44,070
هذا هو لا لا من حيث القيام بتجربة مستخدم جيدة.

20
00:01:46,090 --> 00:01:52,420
لذا من المهم أنه كلما استغرقت نتائجك وقتًا،

21
00:01:52,420 --> 00:01:57,660
يجب أن تكون قادرًا على المضي قدمًا دون انتظار القواعد.

22
00:01:57,660 --> 00:02:01,492
وهذا هو المكان الذي يأتي الحساب غير المتزامن لصالحك.

23
00:02:01,492 --> 00:02:04,640
في الحساب غير المتزامن عند إرسال طلب،

24
00:02:04,640 --> 00:02:07,800
تتوقع أن تعود النتائج في وقت لاحق،

25
00:02:07,800 --> 00:02:12,720
ويجب أن تكون قادرًا على التعامل مع الحقيقة، تعود النتائج الأساسية في وقت

26
00:02:14,490 --> 00:02:20,410
متأخر بكثير عن المكان الذي كنت فيه عند تقديم الطلب.

27
00:02:21,830 --> 00:02:25,710
الوعود توفر لنا طريقة للتعامل مع هذا.

28
00:02:26,790 --> 00:02:32,540
دعونا ننظر إلى الوعود بمزيد من التفصيل في هذه المحاضرة.

29
00:02:32,540 --> 00:02:35,910
وبعد ذلك سنرى أيضًا استخدام الوعود

30
00:02:35,910 --> 00:02:39,490
في تطبيقنا الزاوي قليلاً في وقت لاحق.

31
00:02:39,490 --> 00:02:44,750
وعود، والمفهوم العام هو مساحة واسعة جدا في حد ذاته.

32
00:02:44,750 --> 00:02:49,030
وفي هذه الدورة، ليس لدي الوقت لأخوض في تفاصيل الوعود.

33
00:02:49,030 --> 00:02:51,780
هذا سيصبح مسار كامل في حد ذاته

34
00:02:51,780 --> 00:02:56,950
سأعطيك فقط أساسيات الوعود الضرورية

35
00:02:56,950 --> 00:03:02,490
لنا لفهم كيفية الاستفادة من الوعود في تطبيقنا الزاوي.

36
00:03:02,490 --> 00:03:07,230
أنا أقدم لك الكثير من الخيوط إلى

37
00:03:07,230 --> 00:03:11,380
موارد إضافية حيث يمكنك الذهاب ودراسة الوعود بمزيد من التفصيل.

38
00:03:13,110 --> 00:03:17,230
اذا اذا اذا انزل الى هذا السؤال, ما هو الوعد بالضبط؟

39
00:03:17,230 --> 00:03:21,690
الوعد هو آلية تدعم الحساب غير المتزامن.

40
00:03:21,690 --> 00:03:26,580
أنا فقط أعطيت تفسيرا طويلا متعرجا لماذا الحساب غير المتزامن

41
00:03:26,580 --> 00:03:31,340
ضروري للويب للعمل.

42
00:03:31,340 --> 00:03:36,720
الآن، في استخدام الوعد، يوفر الوعد

43
00:03:36,720 --> 00:03:42,760
آلية أو بروكسي لقيمة غير متوفرة في اللحظة التي تطلب منها ذلك.

44
00:03:42,760 --> 00:03:46,050
لذا فإن الوعد سيعود لك وعدًا، قائلا

45
00:03:46,050 --> 00:03:51,430
إنه عندما تصبح النتيجة متاحة، فسوف يعود ويسلم لك النتائج.

46
00:03:51,430 --> 00:03:56,850
لذا، يقوم الوعد بإرجاع كائن وكيل إليك، وتتمسك بكائن الوكيل.

47
00:03:56,850 --> 00:04:02,030
وسيمنحك هذا الكائن الوكيل إمكانية الوصول إلى النتائج عندما تصبح متاحة.

48
00:04:02,030 --> 00:04:07,290
وهناك طريقة في كيفية انتظار النتائج.

49
00:04:07,290 --> 00:04:11,560
أنت في الواقع لا تعلق الحساب الخاص بك في هذه المرحلة بدلا من ذلك يمكنك

50
00:04:13,110 --> 00:04:19,948
تكوين طريقة لقبول النتائج عندما يعود من هذا الوعد.

51
00:04:19,948 --> 00:04:23,780
باختصار،

52
00:04:23,780 --> 00:04:27,960
يمثل الوعد قيمة ستكون متاحة في وقت لاحق.

53
00:04:27,960 --> 00:04:29,680
قد يكون متاحًا أيضًا على الفور

54
00:04:29,680 --> 00:04:32,960
، وفي هذه الحالة سيعيد الوعد القيمة على الفور.

55
00:04:32,960 --> 00:04:37,940
ولكن في حالة الحاجة إلى إرجاع قيمة في تاريخ مستقبلي، فإنه يعطيك

56
00:04:37,940 --> 00:04:42,040
الوعد بأن هذه القيمة عندما تصبح متاحة سيتم إعادتها إليك.

57
00:04:43,400 --> 00:04:47,820
و هناك دائما إمكانية لعدم الوفاء بالوعد,

58
00:04:47,820 --> 00:04:50,730
لأن النتائج غير متاحة لأي سبب من الأسباب.

59
00:04:51,950 --> 00:04:57,150
في هذه الحالة، سيتم تسليم خطأ لك، أو سيتم تسليم رفض

60
00:04:57,150 --> 00:05:02,430
لك، والأمر متروك لك للتعامل مع حقيقة أن الوعد قد رفض.

61
00:05:03,930 --> 00:05:06,890
ونحن ننظر إلى كيفية التعامل مع ذلك في الشريحة التالية.

62
00:05:07,950 --> 00:05:11,180
وكما علمنا من قبل، فإن الوعد هو وكيل

63
00:05:11,180 --> 00:05:15,080
لشيء ما كان سيحدث في المستقبل أو قد لا يحدث أبدا في المستقبل.

64
00:05:15,080 --> 00:05:19,745
لذلك وعد عندما تعطى لك، سيكون في حالة معلقة.

65
00:05:20,860 --> 00:05:25,130
الآن عندما يحل الوعد، وهذا هو النتائج تصبح متاحة

66
00:05:25,130 --> 00:05:30,080
والوعد قادر على تقديم النتائج لك، ثم الوعد سوف تحل أو

67
00:05:30,080 --> 00:05:31,490
سوف تفي.

68
00:05:31,490 --> 00:05:37,130
وفي هذه الحالة سينتقل الوعد من الحالة المعلقة إلى العزم أو

69
00:05:37,130 --> 00:05:38,490
حالة الوفاء.

70
00:05:38,490 --> 00:05:41,220
حتى في هذه المرحلة النتائج الخاصة بك متاحة لك.

71
00:05:42,540 --> 00:05:48,760
هناك احتمال طفيف أن يتم رفض الوعد بسبب خطأ،

72
00:05:48,760 --> 00:05:50,590
أو أيا كان السبب.

73
00:05:50,590 --> 00:05:53,280
في هذه الظروف البعيدة،

74
00:05:53,280 --> 00:05:57,980
سيتم تسليمك رفض وفي هذه الحالة، سيتم

75
00:05:57,980 --> 00:06:02,209
اعتبار الوعد في الحالة المرفوضة عند تسليم الرفض.

76
00:06:03,380 --> 00:06:06,710
لذلك، عندما تقوم بإنشاء وعد، كما قلت

77
00:06:06,710 --> 00:06:10,560
، الوعد هو كائن وكيل يتم تسليمه لك.

78
00:06:10,560 --> 00:06:14,580
لذلك، عندما تقدم وعدا لشخص ما، فإن الوعد داخليا سيكون له

79
00:06:14,580 --> 00:06:17,500
وظيفة من شأنها أن تتعامل مع كل من التصميم

80
00:06:17,500 --> 00:06:20,310
والخيارات الرفض داخل هناك.

81
00:06:21,480 --> 00:06:22,540
عند كتابة التعليمات البرمجية،

82
00:06:22,540 --> 00:06:28,190
سترى أنك ستكتب التعليمات البرمجية كوعد جديد (وظيفة (حل، رفض).

83
00:06:28,190 --> 00:06:33,350
لذا سواء حل الأمر أو تم رفضه، يجب أن نكون قادرين على إرسال

84
00:06:33,350 --> 00:06:38,290
المعلومات إلى من أوصلنا الوعد إليه.

85
00:06:39,570 --> 00:06:41,600
كيف نفعل ذلك في التعليمات البرمجية؟

86
00:06:41,600 --> 00:06:44,040
دعونا نلقي نظرة على ذلك في الشريحة التالية.

87
00:06:45,280 --> 00:06:50,430
في ما يلي مثال على كيفية تكوين الوعد في التعليمات البرمجية.

88
00:06:50,430 --> 00:06:53,870
في الواقع، هذا المثال مشتق من التمرين الذي ستفعله

89
00:06:53,870 --> 00:06:55,850
بعد ذلك بقليل.

90
00:06:55,850 --> 00:07:01,100
حتى هنا، عندما نقوم بتكوين خدمتنا، يمكننا أن

91
00:07:01,100 --> 00:07:06,830
نجعل خدمتنا تعيد وعد إلى مكون يطلب البيانات من الخدمة.

92
00:07:06,830 --> 00:07:08,368
لذلك عندما يتم إرجاع الوعد،

93
00:07:08,368 --> 00:07:13,810
فإن وعد العودة متاح لك ككائن.

94
00:07:13,810 --> 00:07:18,190
وهذا الوعد يوفر طريقتين، ثم طريقة الصيد.

95
00:07:19,420 --> 00:07:23,416
الآن، ثم، يتم حل الوعد بنجاح.

96
00:07:23,416 --> 00:07:28,300
ثم الوعد سيؤدي

97
00:07:28,300 --> 00:07:32,810
إلى الدعوة إلى العزم.

98
00:07:32,810 --> 00:07:36,960
كما رأيت، يتم بناء الوعد، وداخل الوعد،

99
00:07:36,960 --> 00:07:42,170
لديك وظيفة، والعزم، ورفض، كمعلمتين.

100
00:07:42,170 --> 00:07:46,820
لذلك إذا كان الوعد قادرًا على تقديم النتيجة بنجاح،

101
00:07:46,820 --> 00:07:51,680
فسيقوم باستدعاء طريقة التصميم ثم إرجاع النتيجة إليك.

102
00:07:51,680 --> 00:07:53,520
أين تحصل النتيجة على الواقع؟

103
00:07:54,820 --> 00:07:58,820
عند كتابة التعليمات البرمجية

104
00:07:58,820 --> 00:08:04,400
في انتظار الوعد، فإنك تحدد ما يجب القيام به عندما يقوم الوعد بإرجاع النتيجة

105
00:08:04,400 --> 00:08:09,370
في الخيار ثم لهذا الوعد.

106
00:08:09,370 --> 00:08:14,590
لذلك أقول على سبيل المثال، كنت أقول getdishes.Then وداخل ذلك الحين

107
00:08:14,590 --> 00:08:18,810
سوف توفر وظيفة من شأنها أن تتعامل مع النتيجة عندما يتعلق الأمر.

108
00:08:20,370 --> 00:08:25,700
إذا لم يكن الوعد قادرًا على حلها بشكل صحيح

109
00:08:25,700 --> 00:08:28,570
، فسيرفض مع إرسال الخطأ إليك.

110
00:08:28,570 --> 00:08:31,600
الخطأ كونه كائن خطأ سيتم إرساله مرة أخرى إليك.

111
00:08:31,600 --> 00:08:36,560
لذلك عندما يتم رفض وعدهم، فإنك تتعامل مع

112
00:08:36,560 --> 00:08:41,020
الرفض باستخدام الصيد داخل شفرتك.

113
00:08:41,020 --> 00:08:47,460
حتى داخل الصيد، سوف توفر وظيفة من شأنها أن تتعامل مع الخطأ.

114
00:08:47,460 --> 00:08:51,470
على سبيل المثال، يمكنك ببساطة إخراج رسالة الخطأ

115
00:08:51,470 --> 00:08:56,770
وسجل وحدة التحكم والتعامل مع الخطأ بهذه الطريقة.

116
00:08:56,770 --> 00:09:01,080
أو قد يكون لديك طريقة أكثر تفصيلاً للتعامل مع الخطأ.

117
00:09:01,080 --> 00:09:06,670
سيتم توفير ذلك في خيار catch الذي تعطيه لرمز الوعد هذا

118
00:09:06,670 --> 00:09:12,130
على جانبك عندما يسلم الوعد رفضًا لك.

119
00:09:12,130 --> 00:09:17,690
إذن هكذا يتعامل الجانبان للعملة مع الوعود.

120
00:09:17,690 --> 00:09:21,160
من جانب واحد، يتم إرسال كائن وعد،

121
00:09:21,160 --> 00:09:24,730
وعندما تتلقى كائن الوعد، مع كائن الوعد، يمكنك إما القيام بذلك

122
00:09:24,730 --> 00:09:28,300
ثم والصيد، لذلك من المفترض أن تنفذ كل من ذلك الحين

123
00:09:28,300 --> 00:09:33,510
ومقاييس الصيد تغيرت إلى كائن الوعد هذا.

124
00:09:34,780 --> 00:09:39,910
وبعد ذلك، من هذا الوعد جانبا، إذا كان الوعد النتائج بشكل صحيح،

125
00:09:39,910 --> 00:09:44,757
ثم سيتم استدعاء العزم وبالتالي، سيتم تسليم النتيجة

126
00:09:44,757 --> 00:09:48,770
في الطريقة ثم من وعدك.

127
00:09:48,770 --> 00:09:51,175
إذا تم رفض الوعد،

128
00:09:51,175 --> 00:09:55,530
فستؤدي مكالمة الرفض إلى تسليم الخطأ في المصيد الخاص بك.

129
00:09:56,760 --> 00:10:01,725
إذن هذه هي الطريقة التي ستنفذ بها التعليمات البرمجية باستخدام الوعود.

130
00:10:01,725 --> 00:10:07,375
نتعامل مع المثال في التمرين الذي يتبع هذه المحاضرة.

131
00:10:07,375 --> 00:10:09,786
الآن من الواضح أن السؤال الذي أطرحه هو لماذا الوعود؟

132
00:10:11,347 --> 00:10:13,927
في وقت لاحق، عندما نتعامل مع عقدة جس،

133
00:10:13,927 --> 00:10:18,237
وسوف نتعامل مع كيف يمكننا بناء الاستدعاءات.

134
00:10:18,237 --> 00:10:21,677
وسأشرح تفاصيل الاستدعاءات وطريقة التعامل مع

135
00:10:21,677 --> 00:10:29,920
الاستدعاءات عندما نغطي عقدة JS في الدورة الأخيرة من هذا التخصص.

136
00:10:29,920 --> 00:10:37,400
تحتوي عمليات الاسترجاعات على مشكلة في إنشاء ما يشار إليه باسم الجحيم رد.

137
00:10:37,400 --> 00:10:40,000
لذلك لديك رمز رد اتصال متداخل بشكل كبير

138
00:10:40,000 --> 00:10:44,650
معقد للغاية لتكون قادرة على معرفة ما تحاول القيام به.

139
00:10:44,650 --> 00:10:50,970
توفر الوعود طريقة لمعالجة مشكلة الجحيم هذه.

140
00:10:50,970 --> 00:10:55,270
ولكن في الوقت الحالي نحن نركز على Angular، سأذكر هذه النقطة فقط.

141
00:10:55,270 --> 00:10:59,050
وبعد ذلك سنعود للتعامل مع هذا السؤال في المسار الأخير.

142
00:11:00,760 --> 00:11:05,600
والميزة الأخرى لاستخدام الوعود هي أنه يمكن تغيير الوعود.

143
00:11:05,600 --> 00:11:08,780
الوعد عندما يسلم النتيجة في سلة المهملات،

144
00:11:08,780 --> 00:11:11,130
يمكنك توليد وعد آخر والعودة،

145
00:11:11,130 --> 00:11:16,280
ويمكن التعامل مع هذا الوعد عن طريق تسلسل طريقة أخرى ثم لذلك وهلم جرا.

146
00:11:16,280 --> 00:11:21,720
حتى تتمكن من سلسلة مجموعة من الأساليب ثم معا للتعامل مع

147
00:11:21,720 --> 00:11:23,470
الوعود واحد وراء الآخر.

148
00:11:25,610 --> 00:11:31,850
إذا كانت النتيجة متاحة على الفور أو إذا كنت سترفض على الفور،

149
00:11:31,850 --> 00:11:37,190
فإن الوعد يوفر طريقة للعودة على الفور دون انتظار

150
00:11:37,190 --> 00:11:39,900
الوعد إما حلها أو رفضها.

151
00:11:39,900 --> 00:11:45,766
في هذه الحالة، سوف أقول ببساطة وعد مع رأس المال P.Resolf و

152
00:11:45,766 --> 00:11:52,243
Promise.Rense ثم العودة إما النتيجة أو الخطأ على الفور.

153
00:11:52,243 --> 00:11:57,079
في التمرين الأول، سنتعامل مع هذه الطريقة لإعادة القيمة

154
00:11:57,079 --> 00:11:59,480
من خدمتنا إلى مكوناتنا.

155
00:12:00,920 --> 00:12:04,010
في الجزء الثاني من التمرين، سنتعامل مع

156
00:12:04,010 --> 00:12:09,820
الحالة التي سيحل فيها الوعد بعد فترة زمنية.

157
00:12:09,820 --> 00:12:13,400
وأيضًا ضمن مكوننا، يجب أن نكون قادرين على التعامل مع حقيقة أن

158
00:12:13,400 --> 00:12:20,280
النتائج تعود بعد قليل من الوقت الذي تطلب فيه النتيجة.

159
00:12:22,485 --> 00:12:25,679
مع هذا الفهم السريع للوعود،

160
00:12:25,679 --> 00:12:30,393
دعونا ننتقل إلى التمرين التالي حيث سنتعامل مع الوعود.

161
00:12:30,393 --> 00:12:33,769
[ موسيقى]