﻿1
00:00:01,140 --> 00:00:02,740
‫-: Parliamo ora dei

2
00:00:02,740 --> 00:00:06,790
‫problemi che possono sorgere quando usiamo troppe funzioni di call back.

3
00:00:06,790 --> 00:00:07,650
‫E per

4
00:00:07,650 --> 00:00:09,760
‫farlo, faremo un piccolo esempio

5
00:00:09,760 --> 00:00:11,440
‫per illustrare questo effetto.

6
00:00:11,440 --> 00:00:14,620
‫Ora ricorda che se hai già familiarità con Promises

7
00:00:14,620 --> 00:00:17,130
‫e Async/Await e, in generale, Java

8
00:00:17,130 --> 00:00:18,590
‫Script asincrono, non esitare

9
00:00:18,590 --> 00:00:21,180
‫a saltare questa sezione e contrassegnare tutti

10
00:00:21,180 --> 00:00:23,860
‫i video come completati in modo da

11
00:00:23,860 --> 00:00:26,500
‫poter ancora ottenere il 100% di completamento

12
00:00:26,500 --> 00:00:27,730
‫del corso.

13
00:00:27,730 --> 00:00:28,910
‫Ma se vuoi

14
00:00:28,910 --> 00:00:30,350
‫imparare tutto su Java Script

15
00:00:30,350 --> 00:00:33,283
‫asincrono e come usarlo in OJS, allora andiamo avanti.

16
00:00:35,020 --> 00:00:35,853
‫Quindi vai

17
00:00:35,853 --> 00:00:38,670
‫avanti e prendi i file di avvio per questo progetto

18
00:00:38,670 --> 00:00:39,940
‫dai file del corso.

19
00:00:39,940 --> 00:00:41,510
‫Ce l'ho già qui sul mio

20
00:00:41,510 --> 00:00:42,940
‫desktop, quindi questa cartella qui.

21
00:00:42,940 --> 00:00:44,850
‫E c'è solo questo file lì

22
00:00:44,850 --> 00:00:47,950
‫dentro, quindi è tutto ciò di cui abbiamo bisogno per iniziare.

23
00:00:47,950 --> 00:00:50,410
‫E ce l'ho qui in VS Code già aperto e

24
00:00:50,410 --> 00:00:51,680
‫quello che faremo per

25
00:00:51,680 --> 00:00:54,680
‫iniziare è semplicemente creare un NX. file JS.

26
00:00:54,680 --> 00:00:56,220
‫Proprio come prima.

27
00:00:56,220 --> 00:00:58,130
‫Ora quello che faremo è questo,

28
00:00:58,130 --> 00:00:59,920
‫useremo questo, questo file

29
00:00:59,920 --> 00:01:02,320
‫di cane qui, questo file di testo.

30
00:01:02,320 --> 00:01:06,040
‫E da qui leggeremo la razza del cane.

31
00:01:06,040 --> 00:01:08,570
‫E poi faremo una richiesta HTTP

32
00:01:08,570 --> 00:01:12,020
‫per ottenere un'immagine casuale di un cane con questa razza.

33
00:01:12,020 --> 00:01:14,790
‫E poi salva quell'immagine casuale in un

34
00:01:14,790 --> 00:01:16,440
‫altro file di testo.

35
00:01:16,440 --> 00:01:18,410
‫Quindi è un processo in tre

36
00:01:18,410 --> 00:01:20,860
‫fasi e tutto ciò comporterà funzioni di richiamata.

37
00:01:20,860 --> 00:01:23,330
‫E alla fine vedremo il problema che abbiamo

38
00:01:23,330 --> 00:01:25,130
‫quando usiamo tutte queste funzioni di

39
00:01:25,130 --> 00:01:26,610
‫richiamata l'una dentro l'altra.

40
00:01:26,610 --> 00:01:27,443
‫Va bene?

41
00:01:27,443 --> 00:01:29,360
‫Quindi per questo useremo

42
00:01:29,360 --> 00:01:31,140
‫un'API piuttosto popolare.

43
00:01:31,140 --> 00:01:33,670
‫Che è più simile a un'API divertente.

44
00:01:33,670 --> 00:01:34,980
‫Ma per questo genere

45
00:01:34,980 --> 00:01:36,620
‫di cose è una buona idea usarlo.

46
00:01:36,620 --> 00:01:39,800
‫Quindi è il CANE. CEO, API.

47
00:01:39,800 --> 00:01:42,140
‫Quindi basta premere Dog API qui.

48
00:01:42,140 --> 00:01:43,540
‫Poi

49
00:01:43,540 --> 00:01:45,360
‫qui, la documentazione.

50
00:01:45,360 --> 00:01:48,060
‫E quello che vogliamo è prendere un cane a caso,

51
00:01:48,060 --> 00:01:49,500
‫o una certa razza.

52
00:01:49,500 --> 00:01:52,090
‫Quindi clicca per razza qui.

53
00:01:52,090 --> 00:01:52,993
‫E

54
00:01:54,790 --> 00:01:58,620
‫quaggiù, quaggiù c'è l'endpoint API che raggiungeremo.

55
00:01:58,620 --> 00:02:00,293
‫Quindi è questo URL qui.

56
00:02:01,750 --> 00:02:03,530
‫Quindi, quando fai clic su recupera

57
00:02:03,530 --> 00:02:05,580
‫qui, ogni volta che ottieni una nuova immagine, ok?

58
00:02:05,580 --> 00:02:06,413
‫E quindi

59
00:02:06,413 --> 00:02:08,670
‫in questa sezione faremo effettivamente una richiesta

60
00:02:08,670 --> 00:02:10,420
‫HTTP proprio come abbiamo appreso

61
00:02:10,420 --> 00:02:11,850
‫prima nella sezione precedente.

62
00:02:11,850 --> 00:02:12,683
‫Va bene.

63
00:02:12,683 --> 00:02:14,090
‫Quindi tutto ciò

64
00:02:14,090 --> 00:02:17,741
‫che dovremo fare è creare una richiesta HTTP a questo

65
00:02:17,741 --> 00:02:19,890
‫URL e poi ci restituirà un'immagine.

66
00:02:19,890 --> 00:02:20,780
‫Va bene?

67
00:02:20,780 --> 00:02:22,820
‫Ma per ora, iniziamo con una parte in

68
00:02:22,820 --> 00:02:25,290
‫cui leggiamo il file e otteniamo il contenuto di

69
00:02:25,290 --> 00:02:26,143
‫quel file.

70
00:02:27,900 --> 00:02:31,980
‫Quindi nel nostro indice. js, di nuovo abbiamo bisogno del pacchetto

71
00:02:31,980 --> 00:02:33,440
‫o modulo del file system.

72
00:02:33,440 --> 00:02:34,273
‫Quindi FS

73
00:02:38,260 --> 00:02:40,743
‫e richiedi il modulo FS qui.

74
00:02:41,720 --> 00:02:44,960
‫E proprio come prima di fare fs. readfile e

75
00:02:44,960 --> 00:02:47,320
‫facciamo la versione asincrona.

76
00:02:47,320 --> 00:02:48,153
‫Va bene.

77
00:02:48,153 --> 00:02:51,150
‫Ricorda che qui passiamo la posizione del file e quindi una

78
00:02:51,150 --> 00:02:52,480
‫funzione di call back

79
00:02:52,480 --> 00:02:55,623
‫che verrà chiamata non appena avremo finito di leggere il file.

80
00:02:56,800 --> 00:02:58,420
‫Quindi abbiamo la nostra stringa modello qui.

81
00:02:58,420 --> 00:03:01,733
‫E poi usiamo un dirname proprio come facevamo prima.

82
00:03:02,820 --> 00:03:04,670
‫Quindi il nome della directory corrente.

83
00:03:07,778 --> 00:03:08,963
‫/cane. testo.

84
00:03:11,040 --> 00:03:13,260
‫Va bene e poi la nostra funzione

85
00:03:13,260 --> 00:03:16,303
‫di richiamata il cui primo argomento come sempre è errore.

86
00:03:19,490 --> 00:03:22,750
‫E poi i dati che sono effettivamente nel file.

87
00:03:22,750 --> 00:03:23,940
‫E solo per essere

88
00:03:23,940 --> 00:03:25,393
‫sicuri, accediamo ovviamente alla console.

89
00:03:27,340 --> 00:03:28,530
‫Quindi un'altra stringa

90
00:03:28,530 --> 00:03:31,893
‫di modello in modo da poter stampare bene i nostri dati qui.

91
00:03:33,200 --> 00:03:34,200
‫Va bene.

92
00:03:34,200 --> 00:03:36,040
‫Avvia il terminale qui

93
00:03:36,040 --> 00:03:37,620
‫e accendilo un

94
00:03:37,620 --> 00:03:38,870
‫po'.

95
00:03:40,120 --> 00:03:42,830
‫E quindi sto usando nodemon proprio come ho fatto prima

96
00:03:42,830 --> 00:03:44,893
‫e quindi index. js.

97
00:03:46,220 --> 00:03:48,400
‫Ok, quindi la razza è retriever.

98
00:03:48,400 --> 00:03:51,270
‫Ed è esattamente quello che abbiamo qui in questo file.

99
00:03:51,270 --> 00:03:56,053
‫Ok, il retriever è la razza che cercheremo.

100
00:03:57,390 --> 00:03:59,050
‫Ora all'interno di questa

101
00:03:59,050 --> 00:04:01,520
‫funzione di richiamata, vogliamo fare quella richiesta HTTP

102
00:04:01,520 --> 00:04:03,340
‫di cui abbiamo appena parlato prima.

103
00:04:03,340 --> 00:04:05,360
‫E in realtà ci sono modi

104
00:04:05,360 --> 00:04:06,660
‫per farlo con

105
00:04:06,660 --> 00:04:07,980
‫moduli JS non nativi.

106
00:04:07,980 --> 00:04:10,850
‫Ma è più semplice usare solo un pacchetto NPM per questo.

107
00:04:10,850 --> 00:04:12,100
‫E ce ne sono

108
00:04:12,100 --> 00:04:14,560
‫ancora molti, ma quello che useremo si chiama Super Agent.

109
00:04:14,560 --> 00:04:16,750
‫Più tardi ne useremo un

110
00:04:16,750 --> 00:04:20,710
‫altro, ma per ora Super Agent va bene per quello, ok.

111
00:04:20,710 --> 00:04:24,140
‫E per scaricare effettivamente questo modulo usando NPM, inizieremo

112
00:04:24,140 --> 00:04:27,410
‫creando il nostro file Jason del pacchetto.

113
00:04:27,410 --> 00:04:28,940
‫Ricordati che?

114
00:04:28,940 --> 00:04:31,120
‫Quindi lasciami finire questo e

115
00:04:31,120 --> 00:04:32,703
‫inserirci NPM.

116
00:04:33,780 --> 00:04:36,423
‫E premi invio su tutti questi.

117
00:04:37,340 --> 00:04:38,460
‫Questo non ha molta importanza.

118
00:04:38,460 --> 00:04:39,293
‫Va bene.

119
00:04:39,293 --> 00:04:40,920
‫Vogliamo solo questo pacchetto. jason in

120
00:04:40,920 --> 00:04:43,370
‫modo che contenga effettivamente il nome del pacchetto

121
00:04:43,370 --> 00:04:44,290
‫che stiamo usando.

122
00:04:44,290 --> 00:04:47,130
‫Quindi lo facciamo sempre ogni volta che iniziamo un nuovo progetto.

123
00:04:47,130 --> 00:04:48,630
‫E ora l'installazione di NPM,

124
00:04:48,630 --> 00:04:52,240
‫oppure possiamo semplicemente usare la I, che è la stessa, e poi

125
00:04:52,240 --> 00:04:53,490
‫il nome del pacchetto.

126
00:04:53,490 --> 00:04:55,023
‫Quindi niente di nuovo lì, giusto?

127
00:04:58,510 --> 00:04:59,840
‫Ora per utilizzare

128
00:04:59,840 --> 00:05:01,270
‫questo pacchetto, creiamo una

129
00:05:01,270 --> 00:05:04,200
‫nuova variabile che conterrà quindi la funzione Super

130
00:05:04,200 --> 00:05:06,473
‫Agent che questo modulo ci espone.

131
00:05:16,410 --> 00:05:19,350
‫Ora andiamo avanti e usiamo effettivamente quella funzione

132
00:05:19,350 --> 00:05:20,320
‫Super Agent.

133
00:05:20,320 --> 00:05:22,180
‫Quindi, per fare una richiesta get,

134
00:05:22,180 --> 00:05:24,363
‫usavamo semplicemente ottenere il metodo su di essa.

135
00:05:25,400 --> 00:05:28,400
‫Quindi prendi e poi abbiamo bisogno di quell'URL.

136
00:05:28,400 --> 00:05:31,860
‫Ok, quindi questo che ti ho mostrato prima.

137
00:05:31,860 --> 00:05:32,880
‫Quindi copialo

138
00:05:33,870 --> 00:05:34,970
‫e incollalo qui

139
00:05:35,980 --> 00:05:37,110
‫in una stringa modello.

140
00:05:37,110 --> 00:05:39,870
‫Perché ora sostituiremo effettivamente questa

141
00:05:39,870 --> 00:05:41,830
‫razza qui.

142
00:05:41,830 --> 00:05:43,430
‫Ok, quindi non lo

143
00:05:43,430 --> 00:05:45,250
‫vogliamo, ma invece lo vogliamo

144
00:05:45,250 --> 00:05:47,840
‫usare, quello che otteniamo dal nostro file.

145
00:05:47,840 --> 00:05:49,920
‫Quindi in questo caso sono i dati.

146
00:05:49,920 --> 00:05:50,790
‫Destra?

147
00:05:50,790 --> 00:05:51,750
‫E così,

148
00:05:51,750 --> 00:05:55,160
‫in questo modo, possiamo effettivamente eseguire una richiesta di ricezione HTTP.

149
00:05:55,160 --> 00:05:57,510
‫Ora per ottenere i dati,

150
00:05:57,510 --> 00:06:01,970
‫in realtà dovremo anche usare il metodo end su questo.

151
00:06:01,970 --> 00:06:04,090
‫Ed è qui che passeremo la

152
00:06:04,090 --> 00:06:05,240
‫funzione di richiamata.

153
00:06:07,210 --> 00:06:09,060
‫Quindi di nuovo è un errore

154
00:06:09,060 --> 00:06:10,500
‫prima richiamare e

155
00:06:10,500 --> 00:06:12,000
‫poi passare anche il risultato.

156
00:06:12,900 --> 00:06:14,660
‫E quindi in questa

157
00:06:14,660 --> 00:06:15,920
‫funzione, prima

158
00:06:15,920 --> 00:06:18,620
‫di tutto registriamo il risultato sulla console.

159
00:06:18,620 --> 00:06:21,920
‫Quindi i dati che otteniamo sono nella variabile di risposta.

160
00:06:21,920 --> 00:06:22,997
‫Quindi questo qui.

161
00:06:22,997 --> 00:06:25,960
‫E poi su quello c'è il corpo.

162
00:06:25,960 --> 00:06:29,430
‫Quindi è lì che si trova la risposta effettiva.

163
00:06:29,430 --> 00:06:31,830
‫Ok, ora andiamo avanti e proviamolo.

164
00:06:32,780 --> 00:06:35,180
‫E ora con questo salvataggio qui si è effettivamente spostato verso il basso.

165
00:06:35,180 --> 00:06:36,420
‫Quindi, di nuovo,

166
00:06:36,420 --> 00:06:39,850
‫è a causa dell'estensione precedente che abbiamo impostato in precedenza.

167
00:06:39,850 --> 00:06:41,170
‫E forse hai anche

168
00:06:41,170 --> 00:06:44,520
‫notato come ha sostituito le virgolette normali che avevo qui con

169
00:06:44,520 --> 00:06:45,560
‫queste doppie virgolette

170
00:06:45,560 --> 00:06:48,810
‫e ha anche inserito il punto e virgola qui sopra.

171
00:06:48,810 --> 00:06:50,610
‫E in realtà nell'ultima sezione,

172
00:06:50,610 --> 00:06:52,110
‫o in una delle

173
00:06:52,110 --> 00:06:54,130
‫ultime sezioni, lo impostiamo in modo da

174
00:06:54,130 --> 00:06:56,180
‫avere sempre le virgolette singole a posto.

175
00:06:56,180 --> 00:06:58,530
‫Quindi, per mantenere il nostro codice coerente

176
00:06:58,530 --> 00:07:00,060
‫qui, andiamo avanti

177
00:07:00,060 --> 00:07:03,760
‫e creiamo molto rapidamente il file di configurazione più carino.

178
00:07:03,760 --> 00:07:05,293
‫Quindi ricorda che è carino.

179
00:07:08,320 --> 00:07:10,343
‫Poi lì dentro abbiamo una citazione singola.

180
00:07:11,670 --> 00:07:13,023
‫Impostalo su vero.

181
00:07:14,470 --> 00:07:17,063
‫E ricorda anche la larghezza di stampa.

182
00:07:19,140 --> 00:07:20,990
‫E impostalo su 80.

183
00:07:20,990 --> 00:07:22,373
‫Ok, salva.

184
00:07:23,450 --> 00:07:24,520
‫Salva questo di nuovo.

185
00:07:24,520 --> 00:07:27,800
‫E così vedete che ora sono tornate le nostre virgolette singole.

186
00:07:27,800 --> 00:07:30,380
‫Quindi sembra molto più bello secondo me.

187
00:07:30,380 --> 00:07:32,630
‫Anche in questo caso, se non ti piace

188
00:07:32,630 --> 00:07:35,000
‫in questo modo, puoi ovviamente utilizzare le tue impostazioni.

189
00:07:35,000 --> 00:07:36,090
‫Va bene.

190
00:07:36,090 --> 00:07:36,923
‫Ad ogni

191
00:07:36,923 --> 00:07:38,780
‫modo, questo pezzo di codice

192
00:07:38,780 --> 00:07:41,130
‫qui dovrebbe già fare la richiesta HTTP.

193
00:07:41,130 --> 00:07:41,963
‫Quindi

194
00:07:41,963 --> 00:07:43,143
‫proviamolo in realtà.

195
00:07:45,980 --> 00:07:46,910
‫E

196
00:07:46,910 --> 00:07:49,530
‫infatti, abbiamo effettivamente questa immagine qui.

197
00:07:49,530 --> 00:07:50,710
‫Quindi in realtà

198
00:07:50,710 --> 00:07:52,660
‫ciò che vogliamo è all'interno di

199
00:07:52,660 --> 00:07:54,700
‫questo amico nella proprietà del messaggio.

200
00:07:54,700 --> 00:07:55,533
‫Quindi punto

201
00:07:56,460 --> 00:07:57,293
‫messaggio.

202
00:07:57,293 --> 00:07:58,390
‫Quindi proprio così.

203
00:07:58,390 --> 00:08:02,390
‫E così qui abbiamo la nostra immagine del documentalista.

204
00:08:02,390 --> 00:08:05,190
‫Andiamo avanti e cambiamo davvero la razza qui.

205
00:08:05,190 --> 00:08:06,660
‫E non sono molto bravo con i cani.

206
00:08:06,660 --> 00:08:09,890
‫Usiamo questa razza qui che conosco,

207
00:08:09,890 --> 00:08:10,860
‫Labrador.

208
00:08:10,860 --> 00:08:12,460
‫Non so nemmeno come dirlo.

209
00:08:15,470 --> 00:08:16,630
‫Ma penso

210
00:08:16,630 --> 00:08:18,210
‫che sia così, esiste.

211
00:08:18,210 --> 00:08:20,200
‫Diamo un salvataggio qui di nuovo.

212
00:08:20,200 --> 00:08:22,520
‫E così ora abbiamo un'altra immagine.

213
00:08:22,520 --> 00:08:24,730
‫Possiamo effettivamente fare clic qui e

214
00:08:24,730 --> 00:08:26,913
‫si aprirà quell'immagine per noi.

215
00:08:29,790 --> 00:08:30,623
‫Va bene.

216
00:08:30,623 --> 00:08:33,590
‫Quindi, per fare questa richiesta HTTP qui, avevamo bisogno

217
00:08:33,590 --> 00:08:35,660
‫dei dati che avevamo prima.

218
00:08:35,660 --> 00:08:37,280
‫Quindi questo pezzo di dati.

219
00:08:37,280 --> 00:08:39,890
‫E quindi dovevamo fare questa richiesta qui all'interno

220
00:08:39,890 --> 00:08:42,250
‫di questa funzione di richiamata della funzione

221
00:08:42,250 --> 00:08:44,150
‫di lettura del file, giusto?

222
00:08:44,150 --> 00:08:46,630
‫E quindi hai già una funzione di richiamata qui.

223
00:08:46,630 --> 00:08:48,883
‫Quindi questo all'interno di una richiamata.

224
00:08:49,810 --> 00:08:52,000
‫Ma ora ne aggiungeremo effettivamente un altro.

225
00:08:52,000 --> 00:08:54,600
‫Perché ora vogliamo salvare questa stringa qui in

226
00:08:54,600 --> 00:08:56,300
‫un nuovo file di testo.

227
00:08:56,300 --> 00:08:57,870
‫E quindi lo faremo qui.

228
00:08:57,870 --> 00:09:00,010
‫E poi questo avrà ancora un'altra

229
00:09:00,010 --> 00:09:01,270
‫funzione di richiamata.

230
00:09:01,270 --> 00:09:02,243
‫Ok, ha senso?

231
00:09:03,750 --> 00:09:04,583
‫Quindi fs

232
00:09:05,607 --> 00:09:06,440
‫writefile

233
00:09:07,333 --> 00:09:09,580
‫e poi il nome del file.

234
00:09:09,580 --> 00:09:12,990
‫Chiamiamo quell'immagine di un cane. testo.

235
00:09:12,990 --> 00:09:15,440
‫Quindi i dati che vogliamo salvare in quel file

236
00:09:15,440 --> 00:09:18,430
‫che è rest. corpo. Messaggio.

237
00:09:18,430 --> 00:09:19,800
‫E poi la funzione di richiamata.

238
00:09:19,800 --> 00:09:21,960
‫E questo ovviamente non avrà alcun dato,

239
00:09:21,960 --> 00:09:23,853
‫ma abbiamo di nuovo l'errore.

240
00:09:28,500 --> 00:09:30,390
‫Registriamo qualcosa sulla console come

241
00:09:30,390 --> 00:09:32,140
‫un'immagine di cane casuale

242
00:09:32,140 --> 00:09:33,733
‫salvata su file.

243
00:09:35,930 --> 00:09:38,010
‫Dagli un salvataggio, verrà quindi

244
00:09:38,860 --> 00:09:41,950
‫eseguito nuovamente ed ecco il nostro file immagine.

245
00:09:41,950 --> 00:09:44,030
‫E in realtà puoi vedere che

246
00:09:44,030 --> 00:09:46,373
‫il codice VS mostra quell'immagine qui per noi.

247
00:09:48,060 --> 00:09:50,090
‫Dagli un altro salvataggio qui,

248
00:09:50,090 --> 00:09:52,210
‫quindi eseguirà nuovamente il nostro

249
00:09:52,210 --> 00:09:54,420
‫codice e ora abbiamo, anzi

250
00:09:54,420 --> 00:09:56,290
‫abbiamo un'immagine diversa.

251
00:09:56,290 --> 00:09:57,230
‫Va bene.

252
00:09:57,230 --> 00:10:00,000
‫Quindi il nostro codice funziona davvero.

253
00:10:00,000 --> 00:10:02,050
‫Aggiungiamo solo un piccolo handle di errore

254
00:10:02,050 --> 00:10:03,943
‫qui nel caso qualcosa vada storto.

255
00:10:04,830 --> 00:10:08,593
‫Ad esempio, supponiamo di aggiungere un nome strano qui.

256
00:10:10,050 --> 00:10:11,120
‫Esegui di nuovo.

257
00:10:11,120 --> 00:10:13,860
‫E quindi in questo momento non sarà in grado di trovare

258
00:10:13,860 --> 00:10:14,700
‫un'immagine per quello.

259
00:10:14,700 --> 00:10:17,683
‫E questo in realtà si tradurrà in un errore qui.

260
00:10:18,620 --> 00:10:19,620
‫Quindi, dovremmo sempre

261
00:10:19,620 --> 00:10:22,300
‫fare questo tipo di gestione degli errori all'inizio

262
00:10:22,300 --> 00:10:23,290
‫e dire

263
00:10:23,290 --> 00:10:24,943
‫così se c'è stato un

264
00:10:27,060 --> 00:10:29,010
‫errore, e possiamo semplicemente registrare l'errore. Messaggio.

265
00:10:30,247 --> 00:10:31,830
‫E in effetti dovremmo anche dire

266
00:10:31,830 --> 00:10:34,670
‫che vogliamo tornare subito da questa funzione se c'è un errore.

267
00:10:34,670 --> 00:10:37,330
‫Quindi tornerà e registrerà sulla

268
00:10:37,330 --> 00:10:39,450
‫console, questo errore.

269
00:10:39,450 --> 00:10:41,550
‫E nient'altro accadrà allora.

270
00:10:41,550 --> 00:10:43,840
‫Va bene.

271
00:10:43,840 --> 00:10:45,140
‫Quindi dice di nuovo, non trovato qui.

272
00:10:45,140 --> 00:10:46,920
‫E non ha salvato nulla

273
00:10:46,920 --> 00:10:49,770
‫sul file perché siamo già tornati dalla funzione qui sopra.

274
00:10:49,770 --> 00:10:52,870
‫Va bene?

275
00:10:52,870 --> 00:10:53,703
‫E lo stesso in realtà qui nel

276
00:10:53,703 --> 00:10:55,250
‫caso in cui si verifica un errore durante il salvataggio del file su disco.

277
00:10:55,250 --> 00:10:59,513
‫Torniamo qui, facciamo un altro

278
00:11:00,870 --> 00:11:02,173
‫salvataggio.

279
00:11:03,670 --> 00:11:04,780
‫E così ora funziona di nuovo bene.

280
00:11:04,780 --> 00:11:07,923
‫Va bene.

281
00:11:08,860 --> 00:11:09,693
‫Quindi questo è

282
00:11:09,693 --> 00:11:10,526
‫solo un

283
00:11:10,526 --> 00:11:13,100
‫piccolo esempio per mostrarti quanto sia facile finire

284
00:11:13,100 --> 00:11:15,770
‫con le richiamate all'interno delle richiamate all'interno delle richiamate.

285
00:11:15,770 --> 00:11:17,100
‫E questo ovviamente perché, sappiamo

286
00:11:17,100 --> 00:11:18,390
‫già che in Note

287
00:11:18,390 --> 00:11:20,400
‫JS, dovremmo sempre usare codice asincrono, giusto?

288
00:11:20,400 --> 00:11:23,160
‫Abbiamo finito per utilizzare le richiamate all'interno

289
00:11:23,160 --> 00:11:25,870
‫delle richiamate all'interno delle richiamate.

290
00:11:25,870 --> 00:11:27,090
‫E a volte può

291
00:11:27,090 --> 00:11:30,170
‫andare ancora più in profondità, ovviamente, di quello che abbiamo qui.

292
00:11:30,170 --> 00:11:31,003
‫Ovviamente potresti

293
00:11:31,003 --> 00:11:33,010
‫avere come 10 livelli uno dentro l'altro.

294
00:11:33,010 --> 00:11:34,600
‫Ora tutte queste richiamate rendono

295
00:11:34,600 --> 00:11:36,230
‫il nostro codice un po' disordinato.

296
00:11:36,230 --> 00:11:38,920
‫Lo rende difficile da capire e anche, in

297
00:11:38,920 --> 00:11:40,760
‫generale, difficile da mantenere.

298
00:11:40,760 --> 00:11:43,680
‫Anche in questo caso forse non a questo livello con solo

299
00:11:43,680 --> 00:11:45,050
‫tre richiamate l'una dentro l'altra.

300
00:11:45,050 --> 00:11:48,200
‫Ma se lo avessimo annidato ancora più in

301
00:11:48,200 --> 00:11:50,300
‫profondità, potrebbe diventare rapidamente

302
00:11:50,300 --> 00:11:53,080
‫un incubo mantenere un codice come questo.

303
00:11:53,080 --> 00:11:54,920
‫Ed è per questo che questo

304
00:11:54,920 --> 00:11:56,840
‫schema è stato chiamato call back hell.

305
00:11:56,840 --> 00:11:58,200
‫È facile

306
00:11:58,200 --> 00:12:01,450
‫identificare questa forma triangolare nel nostro codice.

307
00:12:01,450 --> 00:12:02,283
‫È quello che abbiamo qui.

308
00:12:02,283 --> 00:12:04,050
‫Come questa sorta di forma triangolare.

309
00:12:04,050 --> 00:12:07,170
‫Ogni volta che vedi questo, è un

310
00:12:07,170 --> 00:12:08,620
‫segno che

311
00:12:08,620 --> 00:12:10,100
‫sei praticamente all'inferno.

312
00:12:10,100 --> 00:12:11,970
‫Va bene?

313
00:12:11,970 --> 00:12:12,803
‫E forse

314
00:12:12,803 --> 00:12:15,160
‫vedrai o ascolterai questo termine quando farai qualche ricerca

315
00:12:15,160 --> 00:12:17,100
‫su Note JS o qualcosa del genere.

316
00:12:17,100 --> 00:12:19,000
‫Ma in questo momento, questo è in

317
00:12:19,000 --> 00:12:21,200
‫realtà l'unico modo che conosciamo per scrivere codice asincrono

318
00:12:21,200 --> 00:12:22,140
‫a questo punto.

319
00:12:22,140 --> 00:12:25,350
‫Ma lo salveremo per il resto di

320
00:12:25,350 --> 00:12:26,890
‫questa piccola sezione.

321
00:12:26,890 --> 00:12:29,120
‫Quindi impareremo come usare

322
00:12:29,120 --> 00:12:30,810
‫qualcosa chiamato Promesse.

323
00:12:30,810 --> 00:12:32,550
‫E questo alla fine risolverà il

324
00:12:32,550 --> 00:12:33,820
‫nostro problema e

325
00:12:33,820 --> 00:12:37,080
‫renderà il nostro codice più facile da leggere e da mantenere.

326
00:12:37,080 --> 00:12:38,570
‫Quindi andiamo a farlo nel resto della sezione.

