1
00:00:03,650 --> 00:00:06,180
Dans l'exercice précédent,

2
00:00:06,180 --> 00:00:09,414
nous avons appris deux nouveaux aspects de JavaScript,

3
00:00:09,414 --> 00:00:13,155
leur prise en charge des fonctions de première classe et des fermetures.

4
00:00:13,155 --> 00:00:20,250
Nous avons également vu comment Node gère l'aspect de programmation asynchrone et comment Node

5
00:00:20,250 --> 00:00:24,015
prend en charge l'exécution asynchrone du code avec

6
00:00:24,015 --> 00:00:28,365
l'utilisation de rappels et aussi la gestion des erreurs.

7
00:00:28,365 --> 00:00:31,815
Regardons un exemple de la façon dont nous utilisons cela

8
00:00:31,815 --> 00:00:36,650
dans notre application Node dans cet exercice.

9
00:00:36,650 --> 00:00:42,315
En continuant avec l'endroit où nous nous sommes arrêté dans l'exercice précédent,

10
00:00:42,315 --> 00:00:48,025
maintenant je vais aller modifier le module de nœud rectangle, de

11
00:00:48,025 --> 00:00:51,670
sorte qu'il puisse prendre l'aide de rappels.

12
00:00:51,670 --> 00:00:55,375
Donc, je vais supprimer ces exportations ici,

13
00:00:55,375 --> 00:00:59,800
et à la place, ils vont modifier cette fonction.

14
00:00:59,800 --> 00:01:03,190
Je vais utiliser ces deux fonctions un peu plus tard,

15
00:01:03,190 --> 00:01:05,925
donc c'est pourquoi je les sauve en bas.

16
00:01:05,925 --> 00:01:07,515
Laisse-moi les garder de côté.

17
00:01:07,515 --> 00:01:11,530
Et puis je vais modifier ce module rectangle comme suit.

18
00:01:11,530 --> 00:01:15,270
Donc, nous allons dire module.exports.

19
00:01:15,270 --> 00:01:20,025
Nous utilisons donc la façon standard de gérer le module.

20
00:01:20,025 --> 00:01:26,185
Et cela va exporter cette fonction qui prend ces trois paramètres,

21
00:01:26,185 --> 00:01:30,565
x et y et callback.

22
00:01:30,565 --> 00:01:37,300
Le rappel est une fonction qui va être fournie lorsque ce module est appelé.

23
00:01:37,300 --> 00:01:43,825
C' est donc l'utilisation des fonctions de première classe dont nous avons parlé plus tôt.

24
00:01:43,825 --> 00:01:46,775
Donc, à l'intérieur de ce rappel,

25
00:01:46,775 --> 00:01:49,940
vous pouvez voir que vous obtenez deux paramètres, x et y.

26
00:01:49,940 --> 00:01:51,965
Dans ce cas, pour

27
00:01:51,965 --> 00:01:55,520
le rectangle, les x et y correspondent à la longueur et à

28
00:01:55,520 --> 00:02:01,550
la largeur du rectangle qui est passé en tant que deux valeurs.

29
00:02:01,550 --> 00:02:05,090
Donc, à l'intérieur, nous allons vérifier

30
00:02:05,090 --> 00:02:10,300
si x est inférieur ou égal à zéro ou y est inférieur ou égal à zéro.

31
00:02:10,300 --> 00:02:13,255
Nous avons écrit un code comme celui-ci ici.

32
00:02:13,255 --> 00:02:17,630
Donc, je vais juste copier ce code d'ici

33
00:02:17,630 --> 00:02:23,330
et puis l'amener ici et puis nous allons éditer.

34
00:02:23,330 --> 00:02:26,090
Donc, dans ce cas, c'est si x est

35
00:02:26,090 --> 00:02:30,135
inférieur ou égal à zéro ou y est inférieur ou égal à zéro.

36
00:02:30,135 --> 00:02:32,810
Dans ce cas, que faisons-nous ?

37
00:02:32,810 --> 00:02:35,435
Dans ce cas, nous remarquons que

38
00:02:35,435 --> 00:02:39,750
les dimensions du rectangle sont inférieures ou égales à zéro.

39
00:02:39,750 --> 00:02:43,775
Donc nous devons gérer ça différemment,

40
00:02:43,775 --> 00:02:46,330
et nous ferons l'autre partie de ça.

41
00:02:46,330 --> 00:02:52,790
L' autre partie où nous gérons la situation où le rectangle est un rectangle valide.

42
00:02:52,790 --> 00:02:54,245
Donc, dans ce cas,

43
00:02:54,245 --> 00:03:04,580
ce que nous allons faire est d'utiliser ensuite un setTimeout.

44
00:03:04,580 --> 00:03:08,090
Donc ici, je simule le fait que tout ce qui

45
00:03:08,090 --> 00:03:11,860
est fait dans ce rectangle va prendre un certain temps.

46
00:03:11,860 --> 00:03:14,375
C' est donc le traitement asynchrone.

47
00:03:14,375 --> 00:03:18,710
Maintenant, puisque je n'ai pas beaucoup de travail à faire en arrière-plan,

48
00:03:18,710 --> 00:03:22,530
donc je vais simuler cela en utilisant simplement

49
00:03:22,530 --> 00:03:24,830
la fonction setTimeout de JavaScript, puis

50
00:03:24,830 --> 00:03:28,825
retarder avant que la fonction de rappel soit appelée.

51
00:03:28,825 --> 00:03:32,210
Donc, la façon dont j'organise ceci est la suivante.

52
00:03:32,210 --> 00:03:34,270
Donc, à l'intérieur du setTimeout,

53
00:03:34,270 --> 00:03:40,445
je vais appeler cette fonction là

54
00:03:40,445 --> 00:03:44,855
et organiser un délai de

55
00:03:44,855 --> 00:03:50,570
2 000 millisecondes ou deux secondes après quoi cette fonction va être appelée.

56
00:03:50,570 --> 00:03:52,003
Donc, si vous vous souvenez,

57
00:03:52,003 --> 00:03:54,890
le setTimeout qui est pris en charge en JavaScript,

58
00:03:54,890 --> 00:03:58,070
il prend comme premier

59
00:03:58,070 --> 00:04:03,450
paramètre une fonction et le second paramètre serait la période pour laquelle cela va être retardé.

60
00:04:03,450 --> 00:04:07,120
Laisse-moi mettre ça en retrait.

61
00:04:07,120 --> 00:04:09,255
Maintenant, je dois remplir cette fonction ici.

62
00:04:09,255 --> 00:04:11,915
J' ai donc commencé avec la fonction flèche ici

63
00:04:11,915 --> 00:04:15,575
qui ne prend pas de paramètres et puis quand il est appelé,

64
00:04:15,575 --> 00:04:20,745
je vais émettre un appel au rappel.

65
00:04:20,745 --> 00:04:22,880
Ce rappel est une fonction de rappel qui

66
00:04:22,880 --> 00:04:25,760
va être passée en tant que troisième paramètre ici.

67
00:04:25,760 --> 00:04:33,440
Cette fonction de rappel, comme vous l'avez remarqué, prend deux paramètres.

68
00:04:33,440 --> 00:04:38,245
Le premier est l'erreur et le second est la valeur de retour.

69
00:04:38,245 --> 00:04:40,625
Donc, dans ce cas, puisque nous avons une erreur,

70
00:04:40,625 --> 00:04:44,750
parce que x est inférieur ou égal à zéro et y est inférieur ou égal à zéro,

71
00:04:44,750 --> 00:04:50,820
donc la première valeur que je vais transmettre en tant que nouvelle erreur,

72
00:04:50,820 --> 00:05:00,603
et cette erreur est exactement cette chaîne que j'utilisais dans le console.log alors,

73
00:05:00,603 --> 00:05:03,915
et c'est ce que je vais passer en tant que l'erreur ici.

74
00:05:03,915 --> 00:05:06,160
Laissez-moi maintenant supprimer ce console.log,

75
00:05:06,160 --> 00:05:07,625
je n'en ai plus besoin.

76
00:05:07,625 --> 00:05:08,890
Donc, pour le rappel,

77
00:05:08,890 --> 00:05:13,210
je vais générer un nouvel objet d'erreur, puis

78
00:05:13,210 --> 00:05:18,850
le passer comme valeur de retour pour la fonction de rappel, le premier paramètre.

79
00:05:18,850 --> 00:05:23,770
Donc, je dirai que les dimensions du rectangle doivent être supérieures à zéro.

80
00:05:23,770 --> 00:05:28,240
Donc, nous allons dire l,

81
00:05:28,240 --> 00:05:39,000
c'est la valeur x et y que nous avons obtenu en tant que valeurs d'entrée là-bas.

82
00:05:39,000 --> 00:05:40,650
Donc, c'est le rappel.

83
00:05:40,650 --> 00:05:43,890
Et la deuxième partie de ce rappel,

84
00:05:43,890 --> 00:05:51,290
je vais passer comme null car cela va renvoyer une erreur.

85
00:05:51,290 --> 00:05:54,345
Ainsi, lorsque vous retournez une erreur en tant que premier paramètre,

86
00:05:54,345 --> 00:05:59,250
le second paramètre sera ignoré lorsque ce rappel vient d'être reçu par

87
00:05:59,250 --> 00:06:06,510
le module de noeud d'où nous appelons cette fonction particulière là.

88
00:06:06,510 --> 00:06:09,085
Donc, avec cet arrangement,

89
00:06:09,085 --> 00:06:10,700
donc moins de zéro,

90
00:06:10,700 --> 00:06:18,590
alors laissez-moi donner un peu d'espace ici pour qu'il soit correctement mis en retrait ici.

91
00:06:18,590 --> 00:06:21,650
Donc, la façon dont j'organise ceci

92
00:06:21,650 --> 00:06:26,135
ici est que si x est inférieur à zéro et y est inférieur

93
00:06:26,135 --> 00:06:30,040
à zéro, je vais rappeler la fonction de rappel qui a été passée,

94
00:06:30,040 --> 00:06:32,424
mais le premier paramètre passera par

95
00:06:32,424 --> 00:06:36,307
erreur car ici nous remarquons qu'il y a une erreur,

96
00:06:36,307 --> 00:06:38,930
et le deuxième paramètre sera nul.

97
00:06:38,930 --> 00:06:40,940
Si ce n'est pas le cas,

98
00:06:40,940 --> 00:06:44,550
alors je vais appeler le même rappel,

99
00:06:44,550 --> 00:06:46,910
mais avec le premier paramètre.

100
00:06:46,910 --> 00:06:51,800
Laisse-moi copier ce code ici.

101
00:06:51,800 --> 00:07:05,490
Je vais toujours utiliser le setTimeout ici.

102
00:07:05,490 --> 00:07:10,727
Mais cette première partie ne sera pas une erreur,

103
00:07:10,727 --> 00:07:13,005
au lieu de cela, la première partie,

104
00:07:13,005 --> 00:07:15,235
dans ce cas, il n'y a pas d'erreur.

105
00:07:15,235 --> 00:07:20,455
Donc, je vais juste passer cette valeur comme nulle.

106
00:07:20,455 --> 00:07:22,950
Cela signifie donc que l'erreur est définie sur null.

107
00:07:22,950 --> 00:07:26,335
C' est donc un rectangle valide.

108
00:07:26,335 --> 00:07:29,965
Nous pouvons donc calculer les valeurs pour le rectangle.

109
00:07:29,965 --> 00:07:35,165
Mais au lieu de cela, je vais simplement passer

110
00:07:35,165 --> 00:07:40,020
un objet JavaScript contenant les deux fonctions

111
00:07:40,020 --> 00:07:45,330
comme les deux valeurs à l'intérieur de cet objet JavaScript.

112
00:07:45,330 --> 00:07:50,355
Donc, ici, je vais prendre ces deux,

113
00:07:50,355 --> 00:07:54,530
le périmètre et la zone,

114
00:07:55,250 --> 00:08:05,639
et ensuite ces deux-là seront passés comme les deux valeurs ici,

115
00:08:05,639 --> 00:08:07,807
périmètre et zone.

116
00:08:07,807 --> 00:08:12,740
Et ces deux-là, puisqu'ils se trouvent être un objet JavaScript,

117
00:08:12,740 --> 00:08:16,544
donc périmètre et zone seront

118
00:08:16,544 --> 00:08:22,690
les deux propriétés que je vais transmettre à l'intérieur de ces objets JavaScript,

119
00:08:22,690 --> 00:08:25,295
et c'est tout.

120
00:08:25,295 --> 00:08:28,570
Donc ici, dans le second cas,

121
00:08:28,570 --> 00:08:32,034
l'erreur est définie sur null car il n'y a pas d'erreur,

122
00:08:32,034 --> 00:08:33,190
mais la deuxième partie,

123
00:08:33,190 --> 00:08:37,715
remarquez que je passe dans un objet JavaScript contenant deux propriétés,

124
00:08:37,715 --> 00:08:41,530
périmètre et zone, qui sont deux fonctions ici.

125
00:08:41,530 --> 00:08:46,060
Donc, les deux fonctions sont la fonction de périmètre et la fonction de zone.

126
00:08:46,060 --> 00:08:49,390
Donc, cet objet JavaScript sera transmis comme

127
00:08:49,390 --> 00:08:53,705
valeur de retour pour le rappel ici, la deuxième valeur.

128
00:08:53,705 --> 00:08:56,035
Et encore une fois, je vais retarder cela d'

129
00:08:56,035 --> 00:09:02,900
un intervalle de deux secondes avant que la valeur ne soit transmise par cette fonction.

130
00:09:02,900 --> 00:09:07,075
La raison pour laquelle j'utilise le setTimeout est de simuler

131
00:09:07,075 --> 00:09:11,780
un délai avant que le rappel ne vienne de l'autre côté.

132
00:09:11,780 --> 00:09:15,280
Donc, ce type de représente les situations où, par exemple,

133
00:09:15,280 --> 00:09:18,565
vous émettez un appel de base de données à la base de données,

134
00:09:18,565 --> 00:09:23,300
et la base de données doit être lue avant que la valeur vous soit transmise.

135
00:09:23,300 --> 00:09:25,855
Cela va prendre un certain temps.

136
00:09:25,855 --> 00:09:32,560
Donc, je simule fondamentalement cela en ce moment en utilisant la fonction setTimeout ici.

137
00:09:32,560 --> 00:09:37,000
Plus tard, vous verrez que lorsque nous intégrons le MongoDB avec

138
00:09:37,000 --> 00:09:43,060
notre Express dans les exercices ultérieurs,

139
00:09:43,060 --> 00:09:45,580
ce délai devra être simulé,

140
00:09:45,580 --> 00:09:48,670
il sera automatiquement causé en raison du fait que vous devez effectuer des

141
00:09:48,670 --> 00:09:54,190
opérations de base de données dans les coulisses avant que les données ne soient obtenues.

142
00:09:54,190 --> 00:10:00,325
Donc ici, après avoir terminé cette mise à jour des modules rectangle,

143
00:10:00,325 --> 00:10:03,135
donc ici vous voyez que le module rectangle prend

144
00:10:03,135 --> 00:10:06,830
trois paramètres car il s'agit d'un appel d'entrée ici,

145
00:10:06,830 --> 00:10:08,920
x, y et callback.

146
00:10:08,920 --> 00:10:12,445
Et donc, le rappel est la fonction de rappel qui est fournie ici.

147
00:10:12,445 --> 00:10:16,585
Et cette fonction de rappel sera appelée ici,

148
00:10:16,585 --> 00:10:18,685
et lorsque la fonction de rappel est appelée,

149
00:10:18,685 --> 00:10:22,495
soit vous remettez une erreur ou vous remettez

150
00:10:22,495 --> 00:10:28,045
une fonction qui vous permet de calculer le périmètre et la zone du rectangle.

151
00:10:28,045 --> 00:10:33,835
Maintenant, ce modèle d'appel et de passage dans une fonction

152
00:10:33,835 --> 00:10:40,300
de rappel à partir d'un module Node puis le second module Node qui, quand il se termine,

153
00:10:40,300 --> 00:10:44,800
transmettra le résultat en utilisant la fonction de rappel est

154
00:10:44,800 --> 00:10:50,135
exactement le modèle que vous verrez souvent répété dans les applications Node.

155
00:10:50,135 --> 00:10:52,360
C' est la raison pour laquelle je l'illustre.

156
00:10:52,360 --> 00:10:58,735
Bien sûr, c'est un exemple artificiel que j'illustre ici mais il montre

157
00:10:58,735 --> 00:11:02,525
tous les modèles standard que vous utiliserez avec les

158
00:11:02,525 --> 00:11:07,065
fonctions de noeud et de rappel et aussi la gestion des erreurs.

159
00:11:07,065 --> 00:11:10,955
Maintenant, nous avons mis à jour le module rectangle ici.

160
00:11:10,955 --> 00:11:16,870
Allons réparer ce fichier index.js afin qu'il puisse passer dans la fonction de rappel

161
00:11:16,870 --> 00:11:23,770
, puis gérer la valeur de retour qui est renvoyée à partir du module rectangle.

162
00:11:23,770 --> 00:11:26,940
Revenir à index.js,

163
00:11:26,940 --> 00:11:31,270
maintenant nous allons mettre à jour le fichier index.js comme suit.

164
00:11:31,270 --> 00:11:37,955
Je vais supprimer ceci du fichier index.js à la place.

165
00:11:37,955 --> 00:11:42,430
Ici, ce que nous allons finir par faire est d'appeler

166
00:11:42,430 --> 00:11:49,120
ce module rectangle

167
00:11:49,120 --> 00:11:53,880
, puis de passer le l et le b comme les deux paramètres.

168
00:11:53,880 --> 00:12:00,300
Et le troisième paramètre que je vais transmettre est cette fonction de rappel.

169
00:12:00,300 --> 00:12:10,080
Ainsi, la fonction de rappel a deux paramètres, err et rectangle.

170
00:12:10,080 --> 00:12:15,860
Et cette fonction de rappel est implémentée comme suit ici.

171
00:12:15,860 --> 00:12:19,090
Donc, ici, vous voyez que j'appelle

172
00:12:19,090 --> 00:12:23,785
ce module de noeud rectangle et je

173
00:12:23,785 --> 00:12:29,050
passe dans la longueur et la largeur des deux premiers paramètres.

174
00:12:29,050 --> 00:12:31,285
Et le troisième paramètre est, bien sûr,

175
00:12:31,285 --> 00:12:34,355
une fonction de rappel que j'implémente ici.

176
00:12:34,355 --> 00:12:38,250
Donc, c'est une fonction de flèche que j'implémente ici.

177
00:12:38,250 --> 00:12:40,510
Donc, à l'intérieur de cette fonction de rappel,

178
00:12:40,510 --> 00:12:43,245
comment puis-je gérer la valeur de retour ?

179
00:12:43,245 --> 00:12:46,860
Donc ici, je vais dire si (err),

180
00:12:46,860 --> 00:12:51,335
donc si la valeur d'erreur vous est retournée,

181
00:12:51,335 --> 00:12:59,500
alors je vais simplement faire console.log et je dirai

182
00:12:59,500 --> 00:13:09,100
« ERREUR » et puis la deuxième valeur est err.message.

183
00:13:09,100 --> 00:13:11,445
Rappelons que dans le rectangle,

184
00:13:11,445 --> 00:13:14,820
nous avions créé ce nouvel objet d'erreur,

185
00:13:14,820 --> 00:13:18,155
puis passé dans cette chaîne à l'intérieur de cet objet d'erreur.

186
00:13:18,155 --> 00:13:20,100
Cette chaîne sera attachée à

187
00:13:20,100 --> 00:13:24,380
l'objet error à la propriété message de l'objet error ici.

188
00:13:24,380 --> 00:13:26,830
Donc, dans le fichier index.js,

189
00:13:26,830 --> 00:13:30,090
donc je récupère la propriété de message de l'objet erreur

190
00:13:30,090 --> 00:13:33,755
, puis l'imprimer sur ma console ici.

191
00:13:33,755 --> 00:13:35,310
Donc, si une erreur se produit,

192
00:13:35,310 --> 00:13:39,215
je vais imprimer le message d'erreur en utilisant ceci.

193
00:13:39,215 --> 00:13:45,820
Et donc, c'est ainsi que je gérerais l'erreur qui a été retournée par une fonction de rappel.

194
00:13:45,820 --> 00:13:51,360
Sinon, bien sûr, dans ce cas,

195
00:13:51,360 --> 00:13:57,450
le module rectangle a renvoyé la fonction rectangle,

196
00:13:57,450 --> 00:14:01,620
l'objet qui contient le périmètre et les fonctions de zone,

197
00:14:01,620 --> 00:14:08,108
donc je peux aller de l'avant et imprimer cette valeur.

198
00:14:08,108 --> 00:14:14,175
Donc, ici, je vais dire la zone du rectangle

199
00:14:14,175 --> 00:14:23,030
de dimensions égal à,

200
00:14:23,140 --> 00:14:28,270
donc je vais dire,

201
00:14:29,170 --> 00:14:37,155
et b égal à.

202
00:14:37,155 --> 00:14:40,530
La raison pour laquelle je l'identifie

203
00:14:40,530 --> 00:14:47,340
explicitement deviendra très claire lorsque nous exécutons cet exemple.

204
00:14:47,340 --> 00:15:01,480
Je dirai que c'est rectangle.zone.

205
00:15:01,480 --> 00:15:04,188
Maintenant, notez que pour cette zone,

206
00:15:04,188 --> 00:15:09,555
je n'envoie aucun paramètre ici parce que va aux valeurs,

207
00:15:09,555 --> 00:15:14,540
la longueur et le souffle ont déjà été passés ici dans le l et b,

208
00:15:14,540 --> 00:15:19,065
et ceux-ci seraient déjà disponibles pour cela

209
00:15:19,065 --> 00:15:24,245
et ici à cause de la fermeture que JavaScript prend en charge.

210
00:15:24,245 --> 00:15:27,470
Parce que ces x et y sont entrés en tant que paramètres,

211
00:15:27,470 --> 00:15:32,710
donc ceux-ci seront accessibles juste là dans cette fonction de rappel.

212
00:15:32,710 --> 00:15:37,315
Donc, ces x_y seront automatiquement disponibles pour nous ici.

213
00:15:37,315 --> 00:15:39,890
Donc, en fait,

214
00:15:39,890 --> 00:15:43,970
je n'ai pas besoin de fournir ces paramètres x et y ici du tout parce que

215
00:15:43,970 --> 00:15:49,090
ces x et y seront récupérés de ces x et y juste là.

216
00:15:49,090 --> 00:15:53,375
Donc je n'ai même pas besoin de passer ces deux valeurs ici.

217
00:15:53,375 --> 00:15:55,385
C' est pourquoi, juste là,

218
00:15:55,385 --> 00:15:57,905
je peux appeler rectangle.area.

219
00:15:57,905 --> 00:16:03,170
Et ce calcul de zone obtiendra automatiquement les l et b qui ont été passés

220
00:16:03,170 --> 00:16:09,505
par l'appel rectangle au module de noeud direct plus tôt.

221
00:16:09,505 --> 00:16:14,980
Donc, c'est la fermeture de JavaScript fonctionnant ici.

222
00:16:14,980 --> 00:16:17,945
Donc, c'est le premier.

223
00:16:17,945 --> 00:16:23,305
Je suis en train d'imprimer la zone du rectangle.

224
00:16:23,305 --> 00:16:32,990
La même chose, laissez-moi aussi imprimer les périmètres.

225
00:16:32,990 --> 00:16:34,608
Donc, pour imprimer les périmètres,

226
00:16:34,608 --> 00:16:36,720
donc je vais dire console.log.

227
00:16:36,720 --> 00:16:46,560
Le périmètre du rectangle sera le périmètre du rectangle.

228
00:16:46,560 --> 00:16:53,280
Maintenant, je dois vous dire que ce genre d'approche d'implémentation nécessite un peu

229
00:16:53,280 --> 00:17:02,335
d'effort pour comprendre et internaliser la capacité de fonction asynchrone.

230
00:17:02,335 --> 00:17:06,360
Il faut un certain temps pour que vous compreniez complètement comment cela fonctionne vraiment.

231
00:17:06,360 --> 00:17:08,550
Maintenant, pour illustrer le fait que

232
00:17:08,550 --> 00:17:14,642
cet appel de fonction entraînera un appel au module Node

233
00:17:14,642 --> 00:17:19,280
mais cette partie ne sera exécutée qu'après

234
00:17:19,280 --> 00:17:24,830
un délai de deux secondes en raison du fait que nous utilisons la marque de temps définie.

235
00:17:24,830 --> 00:17:28,745
Maintenant, comme nous avons étudié en opération asynchrone,

236
00:17:28,745 --> 00:17:33,155
parce que nous avons déplacé le traitement à l'arrière,

237
00:17:33,155 --> 00:17:41,420
permettez-moi également d'introduire un console.log de plus ici pour faire un point.

238
00:17:41,420 --> 00:17:46,175
Donc, nous dirons que cette déclaration est

239
00:17:46,175 --> 00:17:53,869
après l'appel à rect.

240
00:17:53,869 --> 00:18:00,210
La raison pour laquelle j'illustre ce point est que lorsque vous émettez cet appel,

241
00:18:00,210 --> 00:18:06,130
ce code ne sera exécuté qu'après un délai de deux secondes.

242
00:18:06,130 --> 00:18:08,070
Donc, en attendant,

243
00:18:08,070 --> 00:18:10,360
votre fonction, fonction principale ici,

244
00:18:10,360 --> 00:18:16,340
continuera et exécutera la prochaine ligne de code que vous voyez ici.

245
00:18:16,340 --> 00:18:19,745
C' est donc la suite que vous verrez ici.

246
00:18:19,745 --> 00:18:21,805
Donc, avec ces modifications,

247
00:18:21,805 --> 00:18:27,815
sauvegardons les modifications, puis regardons comment cette application s'exécute maintenant.

248
00:18:27,815 --> 00:18:29,410
Donc, sauver les changements.

249
00:18:29,410 --> 00:18:35,220
Allons au terminal et exécutons cette application de nœud.

250
00:18:35,220 --> 00:18:37,570
Maintenant, allez au terminal, ajoutez l'invite.

251
00:18:37,570 --> 00:18:43,795
Laissez-moi taper npm start et vous remarquerez immédiatement

252
00:18:43,795 --> 00:18:51,790
que la résolution et cette déclaration ont été imprimées plus tôt.

253
00:18:51,790 --> 00:18:54,505
Et puis après ce certain délai,

254
00:18:54,505 --> 00:18:57,855
la zone et le périmètre ont été imprimés.

255
00:18:57,855 --> 00:19:02,130
C' est donc un délai de deux secondes que nous avons introduit en utilisant le délai d'attente fixé.

256
00:19:02,130 --> 00:19:05,755
Donc, vous avez remarqué que dans la version précédente,

257
00:19:05,755 --> 00:19:10,290
cela a été imprimé et immédiatement la zone et le périmètre ont été imprimés juste en dessous.

258
00:19:10,290 --> 00:19:15,120
Mais maintenant, notez que ces valeurs sont imprimées un peu plus tard.

259
00:19:15,120 --> 00:19:20,460
Donc, entre les deux, leurs appels de fonction avec les différents paramètres qui sont déjà entrés

260
00:19:20,460 --> 00:19:26,505
, puis les rappels sont rappelés après deux secondes de retard pour chacun d'eux.

261
00:19:26,505 --> 00:19:32,500
Et en raison du fait qu'il y a la fermeture que le JavaScript prend en charge, de

262
00:19:32,500 --> 00:19:35,980
sorte que les valeurs qui sont transmises sont préservées.

263
00:19:35,980 --> 00:19:38,440
Et donc, lorsque la fonction de rappel est appelée,

264
00:19:38,440 --> 00:19:40,615
la valeur appropriée est imprimée.

265
00:19:40,615 --> 00:19:42,730
C' est pourquoi vous voyez que la zone et

266
00:19:42,730 --> 00:19:46,330
le périmètre sont imprimés correctement et ces deux ici,

267
00:19:46,330 --> 00:19:48,070
ces deux déclarations ici,

268
00:19:48,070 --> 00:19:51,340
correspondent à cet appel particulier à diriger

269
00:19:51,340 --> 00:19:55,100
avec l est égal à deux et b est égal à quatre.

270
00:19:55,100 --> 00:19:56,605
Et puis ces deux,

271
00:19:56,605 --> 00:19:58,150
le suivant à deux, bien sûr,

272
00:19:58,150 --> 00:20:05,000
correspondent à celui-ci particulier et à ceux qui restent comme vous le voyez ici.

273
00:20:05,000 --> 00:20:10,410
Donc, ce que je voulais illustrer est le fait que lorsque vous faites un calcul

274
00:20:10,410 --> 00:20:16,270
asynchrone, le calcul asynchrone prend son propre temps

275
00:20:16,270 --> 00:20:22,460
pour retourner la valeur tandis que votre calcul principal va avancer sans attendre que le rappel soit terminé.

276
00:20:22,460 --> 00:20:25,245
Donc, lorsque vous avez besoin de faire une certaine quantité de travail,

277
00:20:25,245 --> 00:20:29,365
vous avez passé en tant que rappel à cet autre module.

278
00:20:29,365 --> 00:20:31,375
Et quand cet autre module termine son travail,

279
00:20:31,375 --> 00:20:35,010
il va rappeler et ensuite ce code sera exécuté.

280
00:20:35,010 --> 00:20:40,350
C' est donc le point que j'ai illustré en utilisant cet exemple.

281
00:20:40,350 --> 00:20:41,565
Encore une fois, comme je l'ai dit,

282
00:20:41,565 --> 00:20:45,210
cela prend un peu d'imagination et de compréhension

283
00:20:45,210 --> 00:20:48,930
pour internaliser la façon dont cela fonctionne,

284
00:20:48,930 --> 00:20:55,185
mais vous verrez cela avec Node et aussi Express et quand nous utilisons MongoDB,

285
00:20:55,185 --> 00:21:01,785
vous verrez ce type de modèle se répéter très souvent dans la façon dont nous écrivons notre code.

286
00:21:01,785 --> 00:21:06,210
Donc, avec cette simple illustration des rappels et de la gestion des erreurs,

287
00:21:06,210 --> 00:21:08,940
nous terminons cet exercice.

288
00:21:08,940 --> 00:21:13,675
C' est un bon moment pour vous de faire un commentaire get avec ce message,

289
00:21:13,675 --> 00:21:17,700
nœud, rappels et la gestion des erreurs.