1
00:00:03,830 --> 00:00:09,840
Sau phần giới thiệu ngắn gọn về những lời hứa trong bài giảng trước đó, chúng

2
00:00:09,840 --> 00:00:12,270
ta hãy chuyển sang bài tập tiếp theo của chúng tôi, nơi chúng tôi sẽ

3
00:00:12,270 --> 00:00:15,235
sử dụng những lời hứa trong ứng dụng góc cạnh của chúng tôi.

4
00:00:15,235 --> 00:00:24,060
Đặc biệt, hứa hẹn là cách thiết yếu để đối phó với sự chậm trễ đặc biệt là khi

5
00:00:24,060 --> 00:00:27,885
bạn cần truy cập và lấy dữ liệu từ máy chủ

6
00:00:27,885 --> 00:00:32,915
trước khi được chuyển đến thành phần thông qua dịch vụ của bạn.

7
00:00:32,915 --> 00:00:36,440
Vì vậy, các dịch vụ thường trả lại lời hứa cho

8
00:00:36,440 --> 00:00:41,050
các thành phần khi các thành phần gọi các phương thức dịch vụ,

9
00:00:41,050 --> 00:00:43,490
và sau đó khi lời hứa

10
00:00:43,490 --> 00:00:47,385
giải quyết thì các thành phần sẽ có kết quả có sẵn cho chúng.

11
00:00:47,385 --> 00:00:51,920
Chúng tôi sẽ cấu hình lại các dịch vụ mà chúng tôi có trong

12
00:00:51,920 --> 00:00:55,970
ứng dụng góc cạnh của chúng tôi để trả lại

13
00:00:55,970 --> 00:00:58,550
lời hứa và sau đó chúng tôi sẽ cấu hình lại

14
00:00:58,550 --> 00:01:02,390
các thành phần của chúng tôi để có thể đối phó với những lời hứa.

15
00:01:02,390 --> 00:01:10,925
Bước đầu tiên của chúng tôi trong bài tập này là cấu hình lại tất cả các dịch vụ để trả lại lời hứa.

16
00:01:10,925 --> 00:01:14,704
Vì vậy, mỗi phương pháp trong dịch vụ của chúng tôi thay vì trả về

17
00:01:14,704 --> 00:01:18,500
giá trị ngay lập tức nó sẽ trả lại lời hứa.

18
00:01:18,500 --> 00:01:21,685
Vì vậy, làm thế nào để chúng tôi cấu hình các dịch vụ của chúng tôi để trả lại lời hứa?

19
00:01:21,685 --> 00:01:26,635
Vì vậy, đi đến tập tin dishservice.t,

20
00:01:26,635 --> 00:01:35,390
phương pháp getDishes ở đây sẽ trả lại một lời hứa thay vì mảng món ăn.

21
00:01:35,390 --> 00:01:38,840
Vì vậy, chúng tôi cấu hình phương pháp GetDishes để trả lại

22
00:01:38,840 --> 00:01:43,695
lời hứa bằng cách bao bọc đối tượng món ăn này bên trong một lời hứa.

23
00:01:43,695 --> 00:01:49,235
Điều này có nghĩa là nếu lời hứa giải quyết thì kết quả được cung cấp

24
00:01:49,235 --> 00:01:55,435
bởi lời hứa GetDishes sẽ là một mảng món ăn.

25
00:01:55,435 --> 00:01:59,164
Vì vậy, trong thành phần của bạn,

26
00:01:59,164 --> 00:02:03,290
bạn sẽ nhận được mảng món ăn nếu kết quả lời hứa một cách chính xác.

27
00:02:03,290 --> 00:02:07,845
Bây giờ chúng ta đã cấu hình các GetDishes để trả về một lời hứa,

28
00:02:07,845 --> 00:02:10,370
chúng ta cần phải cấu hình lại mã để

29
00:02:10,370 --> 00:02:14,735
mảng món ăn này sẽ được trả về như là một phần của một lời hứa.

30
00:02:14,735 --> 00:02:18,770
Bây giờ kể từ khi chúng ta có kết quả đã có sẵn cho chúng

31
00:02:18,770 --> 00:02:22,190
tôi, tôi sẽ sử dụng phương pháp phím tắt

32
00:02:22,190 --> 00:02:27,875
trả lời hứa bằng cách giải quyết lời hứa ngay lập tức.

33
00:02:27,875 --> 00:02:34,720
Bây giờ rõ ràng, điều này hoạt động tốt nếu bạn có kết quả ngay lập tức sẵn có với bạn.

34
00:02:34,720 --> 00:02:38,120
Nhưng, khi bạn cấu hình lại dịch vụ của mình

35
00:02:38,120 --> 00:02:41,885
để có thể đi và lấy dữ liệu này từ một máy chủ,

36
00:02:41,885 --> 00:02:46,670
thì chúng ta sẽ phải viết lại mã này để đối phó với thực tế là

37
00:02:46,670 --> 00:02:49,310
dịch vụ sẽ không trả lại kết quả

38
00:02:49,310 --> 00:02:52,875
ngay lập tức thay vào đó bạn sẽ phải đợi một thời gian.

39
00:02:52,875 --> 00:02:54,430
Trong bài tập tiếp theo,

40
00:02:54,430 --> 00:03:03,290
chúng ta sẽ mô phỏng sự chậm trễ bằng cách sử dụng một phương pháp JavaScript để nó cung cấp cho bạn

41
00:03:03,290 --> 00:03:12,875
một cảm giác về những gì nó có nghĩa là để đối phó với sự chậm trễ trong việc nhận được một kết quả từ một lời hứa.

42
00:03:12,875 --> 00:03:16,865
Bây giờ chúng tôi đã cấu hình các GetDishes để trả về lời hứa,

43
00:03:16,865 --> 00:03:20,770
tương tự, chúng tôi sẽ cấu hình lại hai phương thức còn lại.

44
00:03:20,770 --> 00:03:24,890
Vì vậy, tôi sẽ sao chép lời hứa này từ

45
00:03:24,890 --> 00:03:30,430
đây và sau đó chỉ cần đính kèm điều này vào hai phần còn lại ở đó,

46
00:03:30,430 --> 00:03:34,220
để tôi sẽ chuyển đổi họ cũng để trả

47
00:03:34,220 --> 00:03:37,100
lời hứa và sau đó tất nhiên bất cứ điều gì chúng ta

48
00:03:37,100 --> 00:03:40,225
có ở đây nên được kèm theo bên trong lời hứa quyết tâm.

49
00:03:40,225 --> 00:03:43,129
Vì vậy, tôi sẽ chỉ sao chép lời hứa quyết tâm

50
00:03:43,129 --> 00:03:50,675
và kèm theo điều này bên trong quyết tâm ở đây.

51
00:03:50,675 --> 00:04:00,080
Tương tự như vậy, đối với món ăn đặc trưng tôi sẽ kèm theo điều này bên trong lời hứa quyết tâm.

52
00:04:00,080 --> 00:04:05,005
Bây giờ, dịch vụ món ăn của tôi được cấu hình để trả lại lời hứa.

53
00:04:05,005 --> 00:04:07,610
Rõ ràng, điều này cũng có nghĩa là tôi cần phải đi đến các

54
00:04:07,610 --> 00:04:11,360
thành phần của tôi và sau đó cấu hình lại các thành phần để có thể đối phó

55
00:04:11,360 --> 00:04:14,090
với thực tế là họ không nhận được dữ liệu

56
00:04:14,090 --> 00:04:17,720
ngay lập tức thay vì họ đang nhận được một lời hứa và sau đó họ

57
00:04:17,720 --> 00:04:21,200
sẽ phải thực hiện các phương pháp sau đó trong

58
00:04:21,200 --> 00:04:25,550
đó lời hứa khi nó kết quả sẽ cung cấp dữ liệu cho bạn.

59
00:04:25,550 --> 00:04:28,639
Vì vậy, bây giờ chúng tôi đã cấu hình dịch vụ món ăn,

60
00:04:28,639 --> 00:04:35,020
chúng tôi biết một nơi mà dịch vụ đang được sử dụng tích cực và đó là thành phần menu.

61
00:04:35,020 --> 00:04:37,730
Vì vậy, để tôi cho bạn thấy làm thế nào chúng tôi sẽ cấu

62
00:04:37,730 --> 00:04:40,640
hình lại thành phần để có thể đối phó với lời hứa.

63
00:04:40,640 --> 00:04:44,420
Vì vậy, khi bạn đi đến menucomponent bạn sẽ ngay lập tức

64
00:04:44,420 --> 00:04:49,984
nhận thấy rằng có một dòng squiggly màu đỏ dưới các món ăn bởi vì,

65
00:04:49,984 --> 00:04:51,880
như bạn thấy, bây giờ, D

66
00:04:51,880 --> 00:04:58,875
ishservice.Getdish là trả lại một lời hứa và sau đó ở đây bạn có,

67
00:04:58,875 --> 00:05:05,660
lời hứa được gán cho một đối tượng mảng món ăn và điều này là không chính xác.

68
00:05:05,660 --> 00:05:08,005
Làm thế nào để chúng ta cấu hình lại mã này?

69
00:05:08,005 --> 00:05:09,559
Vì vậy, như tôi đã đề cập,

70
00:05:09,559 --> 00:05:11,440
khi chúng tôi cấu hình lại mã,

71
00:05:11,440 --> 00:05:16,100
chúng ta cần phải thực hiện sau đó và bắt cho các getDishes.

72
00:05:16,100 --> 00:05:20,820
Vì vậy, hãy để tôi đi trước và thực hiện chỉ sau đó tại thời điểm này,

73
00:05:20,820 --> 00:05:27,360
cho các phương pháp getDishes bởi vì bắt có thể được thực hiện sau này.

74
00:05:27,360 --> 00:05:31,190
Ngay bây giờ chúng ta biết rằng lời hứa sẽ luôn luôn giải quyết một cách chính xác,

75
00:05:31,190 --> 00:05:33,665
vì vậy chúng tôi sẽ thực hiện phương pháp

76
00:05:33,665 --> 00:05:36,645
sau đó ở đây, và sau đó, bên trong phương pháp sau đó,

77
00:05:36,645 --> 00:05:46,650
tôi sẽ nhận được các món ăn đối tượng đến khi lời hứa giải quyết.

78
00:05:46,650 --> 00:05:50,400
Và khi đó là món ăn đối tượng đi vào như một tham số,

79
00:05:50,400 --> 00:05:53,190
vì vậy bạn thấy rằng tôi đang viết một chức năng mũi tên ở đây,

80
00:05:53,190 --> 00:06:03,120
Tôi chỉ sẽ cắt ra và bao gồm ngay đó.

81
00:06:03,170 --> 00:06:09,510
Đây rồi. Đây là cách thành phần

82
00:06:09,510 --> 00:06:16,775
của bạn bây giờ có thể nắm giữ lời hứa và sau đó lấy kết quả khi lời hứa được giải quyết.

83
00:06:16,775 --> 00:06:21,575
Bạn có thể thấy rằng chúng tôi có DishService GetDishes và sau đó phương pháp

84
00:06:21,575 --> 00:06:26,560
thay đổi để nó và theo đó khi sau đó được gọi,

85
00:06:26,560 --> 00:06:28,880
khi lời hứa giải quyết từ phía bên kia,

86
00:06:28,880 --> 00:06:33,635
sau đó các món ăn sẽ được giao cho bạn bởi vì phương pháp getDishes

87
00:06:33,635 --> 00:06:38,450
là trả về một lời hứa nhưng kết quả sẽ được một mảng món ăn.

88
00:06:38,450 --> 00:06:42,320
Mảng món ăn đó đến như là một tham số ở đây vì vậy tôi đang viết một hàm mũi tên

89
00:06:42,320 --> 00:06:46,880
ở đây, nơi tôi đang gán rằng món ăn này cho các món ăn.

90
00:06:46,880 --> 00:06:49,880
Vì vậy, khi lời hứa này giải quyết thì các món ăn sẽ

91
00:06:49,880 --> 00:06:53,930
được giao cho món ăn này. Đó là nó.

92
00:06:53,930 --> 00:06:57,455
Bây giờ thành phần menu của tôi đã sẵn sàng để đối phó với lời hứa.

93
00:06:57,455 --> 00:07:01,715
Tất nhiên, để đối phó với các lỗi bạn cũng cần phải

94
00:07:01,715 --> 00:07:06,130
chuỗi các phương pháp catch vào phương pháp getDishes.

95
00:07:06,130 --> 00:07:08,390
Vì vậy, sau đó và bắt là các phương pháp mà

96
00:07:08,390 --> 00:07:11,540
lời hứa cung cấp cho bạn và do đó bạn thực hiện điều

97
00:07:11,540 --> 00:07:16,790
đó và trong đó bạn sẽ cung cấp các chức năng giao dịch với

98
00:07:16,790 --> 00:07:23,355
tình huống khi lời hứa giải quyết hoặc khi lời hứa từ chối với một lỗi.

99
00:07:23,355 --> 00:07:28,850
Bây giờ tương tự như vậy, chúng ta nên cấu hình lại phương pháp chi tiết món ăn

100
00:07:28,850 --> 00:07:33,890
và cũng là thành phần nhà để đối phó với thực tế là D

101
00:07:33,890 --> 00:07:44,520
ishService hiện đang cung cấp lời hứa chứ không phải là cung cấp các giá trị ngay lập tức.

102
00:07:44,520 --> 00:07:46,470
Trong khi chúng tôi đang ở đó,

103
00:07:46,470 --> 00:07:51,305
chúng tôi cũng có thể cấu hình lại cả hai nhà lãnh đạo và dịch vụ khuyến mãi cũng.

104
00:07:51,305 --> 00:07:55,100
Vì vậy, tôi sẽ để nó như là một bài tập để bạn hoàn thành,

105
00:07:55,120 --> 00:07:59,930
cập nhật cả dịch vụ lãnh đạo và dịch vụ khuyến mãi

106
00:07:59,930 --> 00:08:05,180
để có thể cung cấp những lời hứa tương ứng.

107
00:08:05,180 --> 00:08:09,379
Ngoài ra, do đó, bạn sẽ phải cấu

108
00:08:09,379 --> 00:08:18,785
hình lại mã kịch bản kiểu thành phần trong thành phần chi tiết món ăn,

109
00:08:18,785 --> 00:08:23,360
trong thành phần nhà để đối phó với thực tế là bạn

110
00:08:23,360 --> 00:08:27,950
đang nhận được lời hứa chứ không phải là kết quả thực tế.

111
00:08:27,950 --> 00:08:34,005
Vì vậy, tôi sẽ cho phép bạn hoàn thành phần đó thay vì minh họa tất cả những gì chi tiết,

112
00:08:34,005 --> 00:08:37,620
tôi đã chỉ cho bạn một bước với thành phần chi tiết món ăn.

113
00:08:37,620 --> 00:08:42,380
Vui lòng hoàn thành các bước với cả nhà lãnh đạo và dịch vụ khuyến mãi,

114
00:08:42,380 --> 00:08:45,890
và sau đó cấu hình các thành phần tương ứng cho phù hợp.

115
00:08:45,890 --> 00:08:50,275
Hãy để tôi nhanh chóng hướng dẫn bạn qua các bản cập nhật mà bạn cần phải hoàn thành.

116
00:08:50,275 --> 00:08:56,365
Vì vậy, như bạn thấy các nhà lãnh đạo dịch vụ tôi đã cập nhật đã có với lời hứa.

117
00:08:56,365 --> 00:08:57,585
Như bạn có thể thấy ở đây,

118
00:08:57,585 --> 00:09:00,410
tất cả các phương pháp bây giờ đã được cập nhật để trả lại

119
00:09:00,410 --> 00:09:04,800
lời hứa giống như cách chúng tôi đã làm với DishService.

120
00:09:04,800 --> 00:09:08,420
Tương tự như vậy, các dịch vụ khuyến mãi cũng được cập nhật để

121
00:09:08,420 --> 00:09:12,660
trả lại lời hứa từ tất cả các phương pháp ở đó.

122
00:09:12,660 --> 00:09:16,560
Bây giờ, đi đến các thành phần về,

123
00:09:16,560 --> 00:09:22,160
bạn sẽ thấy rằng trong các thành phần về cũng chúng tôi đã cấu hình để

124
00:09:22,160 --> 00:09:28,790
nhận được các giá trị trong thời gian sau đó của lời hứa có.

125
00:09:28,790 --> 00:09:33,560
Tương tự như vậy, trong thành phần chi tiết món ăn bạn sẽ nhận thấy rằng tôi đã

126
00:09:33,560 --> 00:09:39,765
cấu hình lại điều này để đối phó với lời hứa ở đó.

127
00:09:39,765 --> 00:09:43,495
Tương tự như vậy, trong thành phần nhà,

128
00:09:43,495 --> 00:09:46,190
bạn sẽ nhận thấy rằng trong thành phần nhà

129
00:09:46,190 --> 00:09:51,740
tất cả ba phương pháp ở đây: GetFeaturedDish,

130
00:09:51,740 --> 00:09:54,650
FeaturedPromotion, và FeaturedLeader đã được cập nhật,

131
00:09:54,650 --> 00:09:59,330
với sau đó gắn liền với mỗi một trong số họ để đối phó với lời hứa.

132
00:09:59,330 --> 00:10:06,355
Mã là khá nhiều tương tự như những gì tôi đã minh họa với các thành phần menu.

133
00:10:06,355 --> 00:10:08,570
Một khi bạn hoàn thành điều này, chúng

134
00:10:08,570 --> 00:10:12,995
ta hãy xem nhanh ứng dụng của chúng tôi.

135
00:10:12,995 --> 00:10:15,665
Đi đến ứng dụng của chúng tôi trong trình duyệt,

136
00:10:15,665 --> 00:10:18,870
bạn sẽ không thấy bất kỳ sự khác biệt nào trong ứng dụng.

137
00:10:18,870 --> 00:10:21,409
Nó hoạt động chính xác giống như trước đây,

138
00:10:21,409 --> 00:10:26,385
ngoại trừ bây giờ nó đang sử dụng lời hứa khi

139
00:10:26,385 --> 00:10:29,615
các dịch vụ được thực hiện và các thành phần của bạn

140
00:10:29,615 --> 00:10:33,080
đang đối phó với các lời hứa khi chúng được giải quyết.

141
00:10:33,080 --> 00:10:36,530
Vì vậy, các thành phần trình đơn hoạt động chính xác và

142
00:10:36,530 --> 00:10:40,440
cũng là thành phần chi tiết món ăn cũng hoạt động chính xác.

143
00:10:40,440 --> 00:10:43,150
Với điều này, chúng tôi hoàn thành bài tập này.

144
00:10:43,150 --> 00:10:49,130
Trong bài tập này, chúng tôi đã thấy làm thế nào chúng tôi có thể nâng cấp dịch vụ của mình để

145
00:10:49,130 --> 00:10:55,990
cung cấp lời hứa và chúng tôi cũng cập nhật các thành phần của mình để có thể đối phó với lời hứa.

146
00:10:55,990 --> 00:10:58,710
Điều này hoàn thành bài tập này.

147
00:10:58,710 --> 00:11:06,300
Đây là thời điểm tốt để bạn thực hiện một cam kết git với thông điệp 'Promise part one'.