﻿1
00:00:01,210 --> 00:00:02,880
‫Instructeur : Commençons maintenant à

2
00:00:02,880 --> 00:00:05,783
‫apprendre comment résoudre l'enfer des rappels en utilisant des promesses.

3
00:00:07,430 --> 00:00:09,750
‫Et nous allons commencer par utiliser une promesse

4
00:00:09,750 --> 00:00:11,260
‫pour la demande d'apparition

5
00:00:11,260 --> 00:00:13,010
‫de l'agent au lieu du rappel.

6
00:00:13,010 --> 00:00:16,410
‫Et cela va fonctionner parce que la bibliothèque de super agents

7
00:00:16,410 --> 00:00:19,770
‫prend en charge les promesses prêtes à l'emploi, et nous

8
00:00:19,770 --> 00:00:21,980
‫pouvons donc simplement les utiliser ici.

9
00:00:21,980 --> 00:00:25,410
‫Pour les fonctions de nœud, provenant de packages de nœuds internes comme

10
00:00:25,410 --> 00:00:28,395
‫Read File, nous devrons en fait construire la promesse nous-mêmes,

11
00:00:28,395 --> 00:00:31,690
‫et nous le ferons plus tard dans le prochain cours, ou à

12
00:00:31,690 --> 00:00:32,523
‫peu près.

13
00:00:32,523 --> 00:00:33,356
‫Mais pour

14
00:00:33,356 --> 00:00:36,120
‫l'instant, je veux que vous appreniez à consommer les

15
00:00:36,120 --> 00:00:38,500
‫promesses et seulement plus tard à les construire.

16
00:00:38,500 --> 00:00:40,433
‫Bon, encore une fois, nous allons

17
00:00:40,433 --> 00:00:42,350
‫commencer par la bibliothèque

18
00:00:42,350 --> 00:00:45,930
‫de super agents et plus précisément par la méthode get ici.

19
00:00:45,930 --> 00:00:50,220
‫Parce que cette méthode ici renvoie en fait une promesse.

20
00:00:50,220 --> 00:00:53,690
‫Donc, sans entrer trop dans les détails, pour l'instant,

21
00:00:53,690 --> 00:00:55,410
‫une promesse implémente essentiellement

22
00:00:55,410 --> 00:00:57,550
‫le concept d'une valeur future.

23
00:00:57,550 --> 00:01:00,470
‫Donc, fondamentalement, une valeur que nous nous

24
00:01:00,470 --> 00:01:02,270
‫attendons à recevoir dans

25
00:01:02,270 --> 00:01:04,900
‫le futur, donc c'est un peu

26
00:01:04,900 --> 00:01:08,157
‫comme si nous disions : moi savoir quand

27
00:01:08,157 --> 00:01:10,617
‫vous êtes prêt "et puis rendez-moi

28
00:01:10,617 --> 00:01:14,243
‫ces données. " D'accord?

29
00:01:14,243 --> 00:01:16,906
‫Cette image aléatoire est donc la valeur que

30
00:01:16,906 --> 00:01:19,140
‫nous attendons dans le futur.

31
00:01:19,140 --> 00:01:21,340
‫Et c'est exactement le genre de requête que

32
00:01:21,340 --> 00:01:23,650
‫nous faisons en utilisant une bibliothèque de super agents

33
00:01:23,650 --> 00:01:24,740
‫dans cet exemple.

34
00:01:24,740 --> 00:01:25,573
‫Droit.

35
00:01:25,573 --> 00:01:28,840
‫Et la méthode get que nous utilisons à

36
00:01:28,840 --> 00:01:32,660
‫nouveau renverra automatiquement et immédiatement une promesse dès que nous lançons

37
00:01:32,660 --> 00:01:33,493
‫la requête.

38
00:01:33,493 --> 00:01:35,870
‫La promesse n'a donc pas encore

39
00:01:35,870 --> 00:01:38,610
‫de valeur, car le serveur reçoit toujours les

40
00:01:38,610 --> 00:01:41,470
‫données du serveur de manière asynchrone en arrière-plan,

41
00:01:41,470 --> 00:01:43,790
‫mais la promesse est immédiatement disponible

42
00:01:43,790 --> 00:01:47,070
‫et nous promet essentiellement qu'elle récupérera des données dans

43
00:01:47,070 --> 00:01:48,070
‫le futur.

44
00:01:48,070 --> 00:01:50,150
‫D'accord, est-ce que ça a du sens ?

45
00:01:50,150 --> 00:01:52,960
‫Et cet état de la promesse dans ce cas, donc

46
00:01:52,960 --> 00:01:55,660
‫dès le début, est une promesse en attente.

47
00:01:55,660 --> 00:01:58,331
‫Donc c'est toujours en attente, il

48
00:01:58,331 --> 00:02:01,050
‫n'a toujours pas récupéré de données, d'accord ?

49
00:02:01,050 --> 00:02:03,480
‫Donc ici, à ce stade, nous avons déjà une promesse

50
00:02:03,480 --> 00:02:04,750
‫avec laquelle nous pouvons travailler.

51
00:02:04,750 --> 00:02:07,470
‫Maintenant, tout ce que nous avons à faire est de

52
00:02:07,470 --> 00:02:10,350
‫le consommer, ce qui signifie essentiellement que nous attendons qu'il revienne

53
00:02:10,350 --> 00:02:11,470
‫avec les données.

54
00:02:11,470 --> 00:02:14,513
‫Et pour ce faire, nous utilisons la méthode then dessus.

55
00:02:15,710 --> 00:02:19,650
‫Donc, tout ce que nous faisons est d'utiliser ensuite, puis

56
00:02:19,650 --> 00:02:22,950
‫ici, nous passons une fonction de rappel.

57
00:02:22,950 --> 00:02:25,730
‫Cette fonction de rappel sera ensuite appelée

58
00:02:25,730 --> 00:02:29,740
‫dès que la promesse aura terminé son travail et sera revenue

59
00:02:29,740 --> 00:02:30,980
‫avec les données.

60
00:02:30,980 --> 00:02:33,520
‫Et ces données sont ensuite disponibles en tant qu'argument

61
00:02:33,520 --> 00:02:34,630
‫pour ce rappel.

62
00:02:34,630 --> 00:02:36,380
‫Maintenant, j'aime appeler cela le résultat.

63
00:02:39,270 --> 00:02:42,140
‫Et donc, encore une fois dans cette fonction de rappel que

64
00:02:42,140 --> 00:02:44,690
‫nous avons ici, nous avons alors ces données disponibles.

65
00:02:44,690 --> 00:02:47,962
‫Alors prenons tout cela ici et mettons-le dans

66
00:02:47,962 --> 00:02:50,830
‫cette fonction de rappel et débarrassons-nous en

67
00:02:50,830 --> 00:02:52,423
‫fait de cela.

68
00:02:53,530 --> 00:02:55,350
‫Nous n'avons donc plus besoin de

69
00:02:55,350 --> 00:02:57,110
‫cela, et donnons-lui une sauvegarde.

70
00:02:57,110 --> 00:03:00,380
‫Maintenant, vous pensez peut-être, eh bien, nous

71
00:03:00,380 --> 00:03:04,510
‫utilisons toujours des rappels ici, et oui, c'est en fait vrai.

72
00:03:04,510 --> 00:03:07,650
‫Cela ne ressemble donc pas à un grand changement pour

73
00:03:07,650 --> 00:03:10,530
‫le moment, mais après avoir transformé l'ensemble de l'exemple

74
00:03:10,530 --> 00:03:11,770
‫ici en promesses,

75
00:03:11,770 --> 00:03:15,657
‫vous verrez le grand impact que les promesses auront sur notre code.

76
00:03:15,657 --> 00:03:19,320
‫Donc, en gros, si nous avons plusieurs promesses, nous pourrons

77
00:03:19,320 --> 00:03:22,700
‫enchaîner ces rappels les uns aux autres au lieu

78
00:03:22,700 --> 00:03:24,150
‫de les imbriquer.

79
00:03:24,150 --> 00:03:26,343
‫Ce qui est déjà une énorme amélioration.

80
00:03:27,370 --> 00:03:29,520
‫Maintenant, une chose que j'ai oublié de

81
00:03:29,520 --> 00:03:32,850
‫mentionner plus tôt est qu'une promesse dès qu'elle revient avec les

82
00:03:32,850 --> 00:03:34,980
‫données est appelée une promesse résolue.

83
00:03:34,980 --> 00:03:37,180
‫Ainsi, au début, c'est une promesse en attente

84
00:03:37,180 --> 00:03:39,160
‫et lorsqu'il obtient les données avec

85
00:03:39,160 --> 00:03:41,180
‫succès, il s'agit alors d'une promesse résolue.

86
00:03:41,180 --> 00:03:44,600
‫Cependant, une promesse résolue peut ne pas toujours aboutir

87
00:03:44,600 --> 00:03:47,670
‫car il peut y avoir eu une erreur.

88
00:03:47,670 --> 00:03:50,895
‫Nous disons donc qu'une promesse résolue peut être

89
00:03:50,895 --> 00:03:52,510
‫soit tenue, soit rejetée.

90
00:03:52,510 --> 00:03:55,680
‫La promesse tenue a en fait un résultat que nous

91
00:03:55,680 --> 00:03:56,513
‫voulons utiliser.

92
00:03:56,513 --> 00:04:00,860
‫Alors qu'une promesse rejetée, c'est quand il y a eu une erreur.

93
00:04:00,860 --> 00:04:03,050
‫Alors rappelez-vous la situation que nous

94
00:04:03,050 --> 00:04:05,950
‫avions auparavant où nous avions une mauvaise race de chien.

95
00:04:05,950 --> 00:04:07,750
‫Donc, dans ce cas, nous avons

96
00:04:07,750 --> 00:04:11,840
‫eu une erreur, et nous avons traité cette erreur en utilisant ce morceau de code ici.

97
00:04:11,840 --> 00:04:12,673
‫D'accord.

98
00:04:12,673 --> 00:04:14,980
‫Maintenant, le problème avec cette méthode then

99
00:04:14,980 --> 00:04:18,160
‫est qu'elle ne gère en fait que les promesses tenues, mais

100
00:04:18,160 --> 00:04:20,770
‫elle ne fait rien en cas d'erreur, car

101
00:04:20,770 --> 00:04:23,640
‫pour cela, nous avons en fait une autre méthode.

102
00:04:23,640 --> 00:04:25,790
‫Donc un autre mécanisme pour gérer cela.

103
00:04:25,790 --> 00:04:27,840
‫Et c'est la méthode de capture.

104
00:04:27,840 --> 00:04:29,960
‫Donc juste après la méthode then,

105
00:04:29,960 --> 00:04:32,753
‫nous pouvons enchaîner une autre méthode qui s'appelle catch.

106
00:04:34,390 --> 00:04:35,223
‫D'accord.

107
00:04:35,223 --> 00:04:38,350
‫Et donc celui-ci sera appelé s'il y avait une erreur.

108
00:04:38,350 --> 00:04:42,243
‫Donc ici, nous avons en fait accès à cet objet d'erreur.

109
00:04:44,480 --> 00:04:46,640
‫Et donc allons-y maintenant, prenons ce

110
00:04:46,640 --> 00:04:48,590
‫morceau de code, et mettons-le

111
00:04:48,590 --> 00:04:49,423
‫ici,

112
00:04:49,423 --> 00:04:52,290
‫et maintenant nous pouvons nous en débarrasser.

113
00:04:52,290 --> 00:04:54,310
‫Parce qu'en fait, dans cette méthode

114
00:04:54,310 --> 00:04:56,330
‫d'alors, nous n'avons aucune information s'il

115
00:04:56,330 --> 00:04:59,000
‫y a eu une erreur ou non, car elle

116
00:04:59,000 --> 00:05:01,620
‫n'est appelée que si la promesse a réussi.

117
00:05:01,620 --> 00:05:03,440
‫Donc si c'est une promesse tenue.

118
00:05:03,440 --> 00:05:07,120
‫D'accord, c'est plutôt sympa de séparer ces

119
00:05:07,120 --> 00:05:09,870
‫deux cas automatiquement pour nous.

120
00:05:09,870 --> 00:05:12,400
‫Donc, au lieu d'avoir cette gestion étrange

121
00:05:12,400 --> 00:05:13,470
‫que nous

122
00:05:13,470 --> 00:05:17,400
‫avions auparavant, nous pouvons simplement écrire toute la logique pour le

123
00:05:17,400 --> 00:05:19,080
‫cas réussi qui est le

124
00:05:19,080 --> 00:05:21,900
‫plus habituel parce que nous nous attendons généralement

125
00:05:21,900 --> 00:05:24,550
‫à ce que tout fonctionne bien, mais en

126
00:05:24,550 --> 00:05:29,336
‫cas d'erreur, nous pouvons entrer une autre logique ici dans ce gestionnaire d'erreurs ici.

127
00:05:29,336 --> 00:05:32,370
‫Donc, nous gardons cela bien séparé.

128
00:05:32,370 --> 00:05:33,853
‫Modifions-le encore ici.

129
00:05:36,030 --> 00:05:38,493
‫Donnez-lui une autre sauvegarde pour l'exécuter à nouveau.

130
00:05:39,450 --> 00:05:41,710
‫Et donc ici, nous avons Not Found,

131
00:05:41,710 --> 00:05:45,720
‫et vous voyez donc qu'en fait, il est entré dans cette méthode catch

132
00:05:45,720 --> 00:05:47,860
‫ici et n'a fait aucune

133
00:05:47,860 --> 00:05:50,270
‫des choses qui sont dans cette méthode d'alors.

134
00:05:50,270 --> 00:05:52,980
‫Maintenant, allez-y et réparez ceci ici,

135
00:05:52,980 --> 00:05:53,813
‫fermez-le,

136
00:05:53,813 --> 00:05:54,900
‫sauvegardez celui-ci, et

137
00:05:54,900 --> 00:05:55,910
‫c'est parti.

138
00:05:55,910 --> 00:05:58,620
‫C'est ainsi que nous consommons les promesses.

139
00:05:58,620 --> 00:06:01,870
‫Nous avons donc commencé avec cette méthode ici qui

140
00:06:01,870 --> 00:06:04,280
‫a renvoyé une promesse et ainsi de

141
00:06:04,280 --> 00:06:06,160
‫suite, nous pouvons enchaîner

142
00:06:06,160 --> 00:06:08,810
‫la méthode then qui gère essentiellement le

143
00:06:08,810 --> 00:06:12,060
‫cas réussi, puis à la fin, nous enchaînons également

144
00:06:12,060 --> 00:06:16,090
‫la méthode catch qui gère les échecs, donc les rejetés, promesse.

145
00:06:16,090 --> 00:06:19,860
‫Mais comme je l'ai déjà dit, ce genre de chose ressemble toujours à ce

146
00:06:19,860 --> 00:06:20,930
‫qu'il était avant.

147
00:06:20,930 --> 00:06:21,763
‫Droit?

148
00:06:21,763 --> 00:06:25,000
‫Nous avons donc toujours cette fonction de rappel ici,

149
00:06:26,180 --> 00:06:28,440
‫donc toute cette fonction de rappel

150
00:06:28,440 --> 00:06:32,520
‫et aussi ici dans notre méthode then, nous avons cette fonction

151
00:06:32,520 --> 00:06:34,600
‫de rappel du fichier writeFile.

152
00:06:34,600 --> 00:06:37,663
‫Alors allons-y et corrigeons cela dans la vidéo suivante.

