﻿1
00:00:01,270 --> 00:00:04,633
‫-: Va bene, ora lavoriamo davvero con i flussi.

2
00:00:06,140 --> 00:00:09,363
‫E ancora, iniziando creando un nuovo file.

3
00:00:13,160 --> 00:00:16,370
‫Va bene. Ora diciamo che per

4
00:00:16,370 --> 00:00:20,440
‫qualche motivo nella nostra applicazione, dobbiamo leggere un file di testo di

5
00:00:20,440 --> 00:00:23,800
‫grandi dimensioni dal file system e quindi inviarlo al client.

6
00:00:23,800 --> 00:00:25,640
‫Quindi come lo faremmo?

7
00:00:25,640 --> 00:00:28,650
‫Bene, ci sono diversi modi e ne

8
00:00:28,650 --> 00:00:31,630
‫esploreremo alcuni partendo da quello più

9
00:00:31,630 --> 00:00:35,320
‫elementare e arrivando fino al modo migliore per farlo.

10
00:00:35,320 --> 00:00:39,090
‫Ok, quindi la prima cosa è richiedere il pacchetto

11
00:00:39,090 --> 00:00:43,220
‫del file system proprio come prima, e anche il modulo HTTP.

12
00:00:46,810 --> 00:00:49,600
‫Lascia che ora ti mostri un bel trucco,

13
00:00:49,600 --> 00:00:52,183
‫quindi creiamo un server come questo.

14
00:00:53,770 --> 00:00:58,770
‫Quindi, richiedi il pacchetto HTTP, e poi da qui

15
00:00:59,530 --> 00:01:04,530
‫possiamo chiamare subito createServer. Quindi proprio così.

16
00:01:05,550 --> 00:01:09,720
‫Ok, quindi il risultato della richiesta di HTTP è

17
00:01:09,720 --> 00:01:13,700
‫l'oggetto HTTP e lì possiamo usare createServer.

18
00:01:13,700 --> 00:01:16,690
‫Proprio così, e poi salvalo in una variabile.

19
00:01:16,690 --> 00:01:19,620
‫Quindi questo è un altro modo per creare un nuovo

20
00:01:19,620 --> 00:01:21,943
‫server scrivendo anche un po' meno codice.

21
00:01:24,530 --> 00:01:29,530
‫Ok, proprio come prima, ora elenchiamo l'evento di

22
00:01:29,970 --> 00:01:34,970
‫richiesta e specifichiamo qui la nostra richiamata.

23
00:01:38,550 --> 00:01:41,190
‫Quindi, la prima soluzione che useremo è

24
00:01:41,190 --> 00:01:43,600
‫la più semplice e diretta.

25
00:01:43,600 --> 00:01:46,690
‫Che è semplicemente leggere il file in una variabile e

26
00:01:46,690 --> 00:01:49,350
‫poi, una volta fatto, inviarlo al client

27
00:01:49,350 --> 00:01:52,020
‫nel modo in cui sappiamo già come farlo.

28
00:01:52,020 --> 00:01:54,660
‫Quindi questo è molto semplice e lasciami scrivere

29
00:01:54,660 --> 00:01:58,410
‫un commento qui per questo. Quindi soluzione

30
00:01:58,410 --> 00:02:03,410
‫uno, e così fs. readFile, quindi di nuovo il nostro file di prova.

31
00:02:09,100 --> 00:02:12,720
‫E poi, una volta che è pronto, chiamiamo la nostra funzione di

32
00:02:12,720 --> 00:02:15,270
‫callback in cui abbiamo accesso ai dati.

33
00:02:15,270 --> 00:02:17,703
‫Ma prima gestiamo l'errore.

34
00:02:20,930 --> 00:02:24,880
‫Quindi, ad esempio, nel caso in cui il file non esista,

35
00:02:24,880 --> 00:02:28,250
‫e in tal caso registriamo semplicemente l'errore nella console.

36
00:02:28,250 --> 00:02:32,340
‫Ma in caso contrario, inviamo semplicemente questi dati al cliente.

37
00:02:32,340 --> 00:02:35,280
‫Quindi usiamo l'oggetto risposta proprio come abbiamo fatto

38
00:02:35,280 --> 00:02:40,280
‫prima molte volte, e poi . fine e i dati.

39
00:02:40,610 --> 00:02:44,010
‫Quindi, salvalo e questa è la prima e

40
00:02:44,010 --> 00:02:46,363
‫la soluzione più semplice, giusto?

41
00:02:47,450 --> 00:02:50,460
‫Ma prima di poterlo testare, dobbiamo effettivamente avviare

42
00:02:51,470 --> 00:02:55,433
‫anche un server, giusto? Quindi usiamo listen per farlo.

43
00:02:56,770 --> 00:03:01,603
‫E la porta, la stessa di prima, quindi localhost e la

44
00:03:03,440 --> 00:03:05,253
‫nostra funzione di callback.

45
00:03:12,960 --> 00:03:15,353
‫Ok, quindi vediamo se funziona davvero.

46
00:03:24,080 --> 00:03:27,880
‫E ovviamente no, perché in realtà non ho nemmeno

47
00:03:27,880 --> 00:03:29,023
‫avviato l'applicazione.

48
00:03:31,260 --> 00:03:33,810
‫Quindi ora dice ascolto, e ora vediamo cosa

49
00:03:33,810 --> 00:03:34,853
‫succede qui.

50
00:03:35,730 --> 00:03:39,565
‫E qui andiamo. Quindi questo file è

51
00:03:39,565 --> 00:03:42,960
‫enorme, ha Node. js è il migliore scritto al

52
00:03:42,960 --> 00:03:46,080
‫suo interno tipo 10000 volte o qualcosa del genere, quindi ci vuole

53
00:03:46,080 --> 00:03:49,760
‫molto tempo prima che si carichi completamente. E non siamo davvero interessati

54
00:03:49,760 --> 00:03:53,010
‫a caricare tutto, quindi fermiamolo qui e torniamo

55
00:03:53,010 --> 00:03:56,430
‫al nostro codice. Quindi funziona bene, la soluzione

56
00:03:56,430 --> 00:03:59,480
‫che abbiamo qui in questo caso, ma il problema

57
00:03:59,480 --> 00:04:01,970
‫è che con questa soluzione, il nodo

58
00:04:01,970 --> 00:04:04,660
‫dovrà effettivamente caricare l'intero file in memoria,

59
00:04:04,660 --> 00:04:07,610
‫perché solo dopo che è pronto, può inviare

60
00:04:07,610 --> 00:04:10,890
‫quei dati . Ora questo è un problema quando

61
00:04:10,890 --> 00:04:14,120
‫il file è grande e anche quando ci sono un sacco di richieste

62
00:04:14,120 --> 00:04:17,240
‫che colpiscono il tuo server. Poiché il processo

63
00:04:17,240 --> 00:04:21,464
‫del nodo esaurirà molto rapidamente le risorse e la tua

64
00:04:21,464 --> 00:04:25,740
‫app smetterà di funzionare, tutto si bloccherà e i tuoi utenti

65
00:04:25,740 --> 00:04:28,940
‫non saranno felici, credimi. Quindi questa soluzione qui

66
00:04:28,940 --> 00:04:31,500
‫funziona quando stiamo semplicemente creando qualcosa di piccolo

67
00:04:31,500 --> 00:04:33,990
‫localmente solo per noi stessi, ad esempio.

68
00:04:33,990 --> 00:04:37,030
‫Ma in un'applicazione pronta per la produzione, non è possibile utilizzare un

69
00:04:37,030 --> 00:04:41,270
‫pezzo di codice come questo. Va bene? Quindi passiamo alla nostra

70
00:04:41,270 --> 00:04:44,070
‫seconda soluzione. E in

71
00:04:44,070 --> 00:04:46,933
‫quella soluzione, utilizzeremo effettivamente i flussi.

72
00:04:48,760 --> 00:04:52,420
‫Ok, allora commentiamo questa parte e

73
00:04:52,420 --> 00:04:55,890
‫passiamo alla soluzione numero due.

74
00:04:55,890 --> 00:04:58,270
‫E l'idea qui è che in realtà

75
00:04:58,270 --> 00:05:03,000
‫non abbiamo davvero bisogno di leggere questi dati dal file in una variabile, giusto?

76
00:05:03,000 --> 00:05:05,860
‫Non abbiamo bisogno di questa variabile. Quindi, invece di

77
00:05:05,860 --> 00:05:09,310
‫leggere i dati in una variabile e dover archiviare

78
00:05:09,310 --> 00:05:12,710
‫quella variabile in memoria, creeremo semplicemente un flusso leggibile.

79
00:05:12,710 --> 00:05:15,490
‫Quindi, quando riceviamo ogni blocco di dati,

80
00:05:15,490 --> 00:05:17,920
‫lo inviamo al client come

81
00:05:17,920 --> 00:05:20,440
‫risposta che è un flusso scrivibile, ricorda.

82
00:05:20,440 --> 00:05:22,963
‫Quindi lascia che ora ti mostri come possiamo usare gli stream.

83
00:05:24,570 --> 00:05:28,823
‫Quindi creiamo una variabile, chiamiamola leggibile qui, e poi

84
00:05:30,025 --> 00:05:33,437
‫di nuovo dal file system, usiamo createReadStream

85
00:05:39,450 --> 00:05:44,450
‫Quindi questo ovviamente piccolo. E ora il nome del file che

86
00:05:44,820 --> 00:05:49,820
‫stiamo cercando di leggere. Quindi questo è di nuovo, file di prova. testo.

87
00:05:50,580 --> 00:05:54,130
‫Ok, perfetto. Quindi questo ora crea un flusso dai

88
00:05:54,130 --> 00:05:57,090
‫dati che si trovano in questo file di testo, che possiamo

89
00:05:57,090 --> 00:06:00,540
‫quindi consumare pezzo per pezzo. Quindi pezzo per pezzo.

90
00:06:00,540 --> 00:06:03,350
‫E come lo facciamo? Bene, ricorda

91
00:06:03,350 --> 00:06:06,600
‫dall'ultima lezione, che ogni volta che c'è un

92
00:06:06,600 --> 00:06:10,020
‫nuovo pezzo di dati che possiamo consumare, un flusso

93
00:06:10,020 --> 00:06:13,070
‫leggibile emette l'evento dati. Ok, quindi possiamo ascoltarlo,

94
00:06:13,070 --> 00:06:15,313
‫proprio come abbiamo appreso nella conferenza degli eventi.

95
00:06:17,220 --> 00:06:22,220
‫Così leggibile. on, data e poi la nostra funzione di callback.

96
00:06:23,690 --> 00:06:26,910
‫E nella nostra funzione di callback, abbiamo accesso a quel pezzo

97
00:06:26,910 --> 00:06:28,993
‫di dati, quindi a quel pezzo.

98
00:06:30,160 --> 00:06:32,660
‫Permettetemi di chiamarlo chunk qui nella nostra

99
00:06:33,540 --> 00:06:37,100
‫funzione di callback e così ora possiamo gestire questo pezzo di dati.

100
00:06:37,100 --> 00:06:39,060
‫E quello che faremo con

101
00:06:39,060 --> 00:06:42,010
‫questo pezzo di dati, con questo pezzo, è

102
00:06:42,010 --> 00:06:45,210
‫effettivamente scriverlo su un flusso scrivibile, che è la risposta.

103
00:06:45,210 --> 00:06:50,210
‫Quindi, ris. scrivi, questo pezzo. Va bene?

104
00:06:51,250 --> 00:06:54,080
‫Quindi ricorda ancora che questa risposta è

105
00:06:54,080 --> 00:06:57,760
‫un flusso scrivibile. Quindi, proprio come ho

106
00:06:57,760 --> 00:07:01,540
‫detto nel video precedente, giusto? E così ora possiamo usare

107
00:07:01,540 --> 00:07:06,110
‫il metodo di scrittura per inviare ogni singolo pezzo di dati in quel flusso.

108
00:07:06,110 --> 00:07:08,920
‫Ok, e con questo stiamo effettivamente

109
00:07:08,920 --> 00:07:12,230
‫trasmettendo il contenuto dal file direttamente al client.

110
00:07:12,230 --> 00:07:14,300
‫Ok, hai capito la differenza?

111
00:07:14,300 --> 00:07:17,710
‫Quindi, prima, scriviamo tutto in una volta in una variabile

112
00:07:17,710 --> 00:07:21,000
‫e, una volta pronta, abbiamo inviato l'intero pezzo di

113
00:07:21,000 --> 00:07:23,927
‫dati al client. Ma in questa

114
00:07:23,927 --> 00:07:26,370
‫situazione, con il flusso, è diverso.

115
00:07:26,370 --> 00:07:29,730
‫Stiamo effettivamente trasmettendo il file, quindi leggiamo una

116
00:07:29,730 --> 00:07:32,670
‫parte del file e, non appena è

117
00:07:32,670 --> 00:07:37,440
‫disponibile, lo inviamo direttamente al client, utilizzando il metodo di scrittura del

118
00:07:37,440 --> 00:07:40,990
‫flusso di risposta. Quindi, quando il pezzo

119
00:07:40,990 --> 00:07:44,290
‫successivo sarà disponibile, quel pezzo verrà inviato e fino a

120
00:07:44,290 --> 00:07:48,390
‫quando l'intero file non verrà letto e inviato in streaming al client.

121
00:07:48,390 --> 00:07:51,650
‫Ok, ora, per finire, dobbiamo anche gestire l'evento

122
00:07:51,650 --> 00:07:54,680
‫quando tutti i dati sono stati letti.

123
00:07:54,680 --> 00:07:57,430
‫Quindi, quando lo stream ha praticamente finito di leggere i

124
00:07:57,430 --> 00:07:58,263
‫dati dal file.

125
00:07:59,580 --> 00:08:03,113
‫Quindi, in quel caso, verrà emesso l'evento finale,

126
00:08:05,810 --> 00:08:10,040
‫e quindi non appena ciò accadrà ciò che faremo

127
00:08:10,040 --> 00:08:15,040
‫è fare res. fine, ok? E abbiamo usato

128
00:08:16,430 --> 00:08:21,220
‫questo prima, quindi chiamando fine sulla risposta, l'abbiamo fatto prima, giusto?

129
00:08:21,220 --> 00:08:25,000
‫E ora, in realtà, ha più senso, perché ancora una

130
00:08:25,000 --> 00:08:28,540
‫volta, anche la risposta è un flusso e il

131
00:08:28,540 --> 00:08:31,820
‫metodo finale segnala che non verranno più scritti dati

132
00:08:31,820 --> 00:08:34,090
‫su questo flusso scrivibile, ok?

133
00:08:34,090 --> 00:08:39,080
‫Quindi quassù tutto ciò che abbiamo fatto è stato effettivamente usare res. terminare con i dati

134
00:08:39,080 --> 00:08:41,970
‫in esso. Quindi non abbiamo fatto streaming, tutto

135
00:08:41,970 --> 00:08:44,490
‫ciò che abbiamo fatto è stato alla fine inviare alcuni dati.

136
00:08:44,490 --> 00:08:46,470
‫Ora, in questo caso, non stiamo

137
00:08:46,470 --> 00:08:50,000
‫passando nulla in questo metodo end, perché abbiamo già inviato tutti

138
00:08:50,000 --> 00:08:52,930
‫i dati utilizzando res. write, pezzo per pezzo,

139
00:08:52,930 --> 00:08:55,550
‫e quindi quando il flusso leggibile ha finito

140
00:08:55,550 --> 00:08:59,220
‫di leggere il suo file, tutto ciò che dobbiamo fare è quindi

141
00:08:59,220 --> 00:09:03,330
‫segnalare che siamo pronti usando res. finisci così, ok?

142
00:09:03,330 --> 00:09:07,910
‫Quindi abbiamo sempre bisogno di usare questi dati e questo evento finale qui uno dopo

143
00:09:07,910 --> 00:09:11,160
‫l'altro in questo modo. Perché altrimenti,

144
00:09:11,160 --> 00:09:14,030
‫la risposta in realtà non verrà

145
00:09:14,030 --> 00:09:17,340
‫mai inviata al client. Ok, quindi senza questo

146
00:09:17,340 --> 00:09:20,230
‫pezzo qui, l'intera soluzione non funzionerebbe davvero, ok?

147
00:09:20,230 --> 00:09:25,000
‫Quindi ora chiudiamo questo, ricominciamo e

148
00:09:25,000 --> 00:09:30,000
‫leggiamo di nuovo, così vedrai che funziona

149
00:09:30,880 --> 00:09:35,670
‫di nuovo, ok? Ora questa volta senza i problemi che abbiamo

150
00:09:35,670 --> 00:09:39,400
‫avuto con la prima soluzione. Fermiamoci qui e torniamo

151
00:09:39,400 --> 00:09:41,770
‫al nostro codice, perché voglio mostrarvi ora

152
00:09:41,770 --> 00:09:44,260
‫che c'è un altro evento che possiamo ascoltare

153
00:09:44,260 --> 00:09:47,403
‫su un flusso leggibile, che è l'evento di errore.

154
00:09:49,240 --> 00:09:54,240
‫Così leggibile. on('error') e in questa funzione

155
00:09:55,000 --> 00:09:57,733
‫di callback abbiamo accesso all'oggetto errore.

156
00:09:58,810 --> 00:10:03,683
‫Va bene, in questo caso registreremo questo errore nella console,

157
00:10:05,970 --> 00:10:10,593
‫quindi invieremo il risultato del file non trovato.

158
00:10:14,400 --> 00:10:17,283
‫E possiamo anche impostare il codice di stato su

159
00:10:20,160 --> 00:10:23,772
‫un errore, ad esempio 500. Quindi di solito è impostato

160
00:10:23,772 --> 00:10:28,020
‫automaticamente su 200 che significa ok, ma in questo caso abbiamo un errore del

161
00:10:28,020 --> 00:10:31,420
‫server, il che significa che vogliamo restituire il codice 500.

162
00:10:31,420 --> 00:10:36,213
‫Va bene, quindi ora...

163
00:10:37,390 --> 00:10:39,313
‫In realtà devo smettere di nuovo.

164
00:10:45,520 --> 00:10:46,970
‫Quindi vediamo cosa succede ora.

165
00:10:53,001 --> 00:10:54,870
‫Oh, abbiamo già un errore proprio

166
00:10:54,870 --> 00:10:57,790
‫qui, res. lo stato non è una funzione. E sì,

167
00:10:57,790 --> 00:11:00,872
‫in realtà il suo statusCode. Quindi questo è il

168
00:11:00,872 --> 00:11:05,100
‫modo in cui lo scrivi in express, quindi sono già abituato a scrivere

169
00:11:05,100 --> 00:11:10,100
‫express così tanto, quindi express è un nodo. js che useremo nel resto del

170
00:11:10,370 --> 00:11:12,150
‫corso e in express lo

171
00:11:12,150 --> 00:11:15,060
‫fai in questo modo, e quindi questo

172
00:11:15,060 --> 00:11:18,420
‫era il problema. Quindi sono già un po' troppo

173
00:11:18,420 --> 00:11:19,673
‫abituato a scrivere express.

174
00:11:22,460 --> 00:11:26,470
‫Quindi torniamo indietro, e sì, ora vediamo il file non trovato, e

175
00:11:26,470 --> 00:11:31,090
‫se apriamo gli strumenti di sviluppo, vedi il nostro codice di errore 500 che abbiamo

176
00:11:31,090 --> 00:11:34,823
‫appena inviato prima, e se andiamo alla nostra scheda di rete,

177
00:11:36,440 --> 00:11:39,840
‫proviamo di nuovo, hai anche il codice di stato qui.

178
00:11:39,840 --> 00:11:43,990
‫Quindi proprio come abbiamo visto in uno dei video precedenti in

179
00:11:43,990 --> 00:11:47,130
‫un'altra sezione in realtà. Quindi è così che possiamo

180
00:11:47,130 --> 00:11:49,343
‫ispezionare questo tipo di cose nella scheda di rete.

181
00:11:52,530 --> 00:11:57,343
‫Va bene, quindi risolviamolo qui, salviamolo e ok, quindi

182
00:11:58,300 --> 00:12:03,300
‫funziona di nuovo perfettamente ma c'è ancora un problema con

183
00:12:03,550 --> 00:12:06,240
‫questo approccio che ti ho

184
00:12:06,240 --> 00:12:09,360
‫appena mostrato. E il problema è

185
00:12:09,360 --> 00:12:12,240
‫che il nostro flusso leggibile, quindi quello che

186
00:12:12,240 --> 00:12:16,100
‫stiamo usando per leggere il file dal disco, è molto molto

187
00:12:16,100 --> 00:12:19,310
‫più veloce dell'invio effettivo del risultato con il flusso

188
00:12:19,310 --> 00:12:22,910
‫scrivibile di risposta sulla rete. E questo travolgerà il flusso

189
00:12:22,910 --> 00:12:27,360
‫di risposta, che non può gestire tutti questi dati in arrivo così velocemente.

190
00:12:27,360 --> 00:12:29,920
‫E questo problema si chiama contropressione.

191
00:12:29,920 --> 00:12:33,510
‫Ed è un vero problema che può capitare in situazioni reali.

192
00:12:33,510 --> 00:12:37,140
‫Quindi, in questo caso, si verifica una contropressione quando la

193
00:12:37,140 --> 00:12:41,130
‫risposta non può inviare i dati alla stessa velocità con cui

194
00:12:41,130 --> 00:12:43,620
‫li riceve dal file, ha senso?

195
00:12:43,620 --> 00:12:46,050
‫Quindi dobbiamo risolvere quella

196
00:12:46,050 --> 00:12:48,793
‫soluzione e trovarne una ancora migliore.

197
00:12:50,130 --> 00:12:52,813
‫Quindi, creeremo la soluzione tre,

198
00:12:55,120 --> 00:12:57,527
‫e questa è in

199
00:12:57,527 --> 00:13:01,150
‫realtà l'ultima, ok? Quindi non più soluzioni di tre.

200
00:13:01,150 --> 00:13:05,000
‫Quindi il segreto qui è usare effettivamente quell'operatore di tubi

201
00:13:05,000 --> 00:13:07,405
‫che ho menzionato nell'ultimo video, ok?

202
00:13:07,405 --> 00:13:12,405
‫Quindi l'operatore pipe è disponibile su tutti i flussi leggibili e

203
00:13:12,960 --> 00:13:16,760
‫ci consente di convogliare l'output di un

204
00:13:16,760 --> 00:13:20,660
‫flusso leggibile direttamente nell'input di un flusso scrivibile, ok?

205
00:13:20,660 --> 00:13:24,010
‫E questo risolverà il problema della contropressione perché

206
00:13:24,010 --> 00:13:27,340
‫gestirà automaticamente la velocità fondamentalmente dei dati

207
00:13:27,340 --> 00:13:31,260
‫in entrata e la velocità dei dati in uscita.

208
00:13:31,260 --> 00:13:35,603
‫Ok, quindi otteniamo il nostro flusso leggibile qui.

209
00:13:38,290 --> 00:13:41,290
‫Ok, questo è il nostro flusso leggibile, e

210
00:13:41,290 --> 00:13:45,253
‫ora tutto ciò che dobbiamo fare è prendere il nostro flusso leggibile,

211
00:13:46,280 --> 00:13:50,650
‫utilizzare il metodo pipe su di esso, quindi inserire un flusso scrivibile e

212
00:13:50,650 --> 00:13:53,900
‫questa è la risposta. Ed è proprio così.

213
00:13:53,900 --> 00:13:57,460
‫Questo è tutto ciò che dobbiamo fare per questa soluzione, ok?

214
00:13:57,460 --> 00:13:59,960
‫Quindi funziona sempre così, lascia che

215
00:13:59,960 --> 00:14:04,960
‫lo scriva qui come commento. Quindi abbiamo bisogno di una fonte leggibile

216
00:14:06,040 --> 00:14:09,310
‫fondamentalmente, ok quindi di nuovo questo è solo per spiegartelo,

217
00:14:09,310 --> 00:14:12,330
‫quindi possiamo usare la pipe su di esso, e

218
00:14:12,330 --> 00:14:17,010
‫qui dovremo mettere una destinazione scrivibile. Quindi è da qui che

219
00:14:17,010 --> 00:14:19,980
‫provengono i nostri dati, e deve essere un

220
00:14:19,980 --> 00:14:24,980
‫flusso leggibile, e quei dati che possiamo quindi convogliare in una destinazione scrivibile.

221
00:14:25,060 --> 00:14:29,520
‫Quindi in questo caso la nostra destinazione è la risposta, ok?

222
00:14:29,520 --> 00:14:32,790
‫Ora questo flusso qui può effettivamente essere anche un flusso duplex

223
00:14:32,790 --> 00:14:35,790
‫o di trasformazione, ma ciò che conta è che

224
00:14:35,790 --> 00:14:38,930
‫possiamo scrivere nel flusso. E la risposta,

225
00:14:38,930 --> 00:14:42,553
‫ovviamente, è un tale flusso. Quindi possiamo ovviamente scrivere

226
00:14:42,553 --> 00:14:45,560
‫alla risposta che verrà inviata al cliente, ok?

227
00:14:45,560 --> 00:14:48,890
‫Quindi l'operatore del tubo risolve automaticamente il problema

228
00:14:48,890 --> 00:14:51,860
‫della contropressione che avevamo in precedenza.

229
00:14:51,860 --> 00:14:54,720
‫Ed è anche una soluzione molto più

230
00:14:54,720 --> 00:14:58,000
‫elegante e diretta. Quindi quello che abbiamo

231
00:14:58,000 --> 00:15:01,020
‫fatto qui prima era solo mostrarti tutti i modi

232
00:15:01,020 --> 00:15:05,290
‫in cui possiamo usare i metodi e gli eventi di flusso per creare

233
00:15:05,290 --> 00:15:08,520
‫questo tipo di soluzione e ovviamente hanno molti casi d'uso,

234
00:15:08,520 --> 00:15:12,044
‫ma in un problema come questo, il tubo operatore è

235
00:15:12,044 --> 00:15:16,060
‫in realtà la soluzione migliore. Dietro le quinte fa qualcosa di

236
00:15:16,060 --> 00:15:17,950
‫simile qui in realtà, ma ancora

237
00:15:17,950 --> 00:15:20,880
‫una volta in un modo molto più diretto per noi

238
00:15:20,880 --> 00:15:23,000
‫di scrivere, perché gestisce tutte le cose

239
00:15:23,000 --> 00:15:26,500
‫internamente dietro le quinte. Quindi credo che la pipe qui

240
00:15:26,500 --> 00:15:30,370
‫sia in realtà il modo più semplice di consumare e scrivere flussi, a

241
00:15:30,370 --> 00:15:33,410
‫meno che, ovviamente, come ho detto, non abbiamo bisogno

242
00:15:33,410 --> 00:15:36,670
‫di soluzioni più personalizzate. E poi, dobbiamo usare

243
00:15:36,670 --> 00:15:39,910
‫questi strumenti più complicati come questi eventi e metodi

244
00:15:39,910 --> 00:15:43,633
‫che ti ho mostrato prima. Va bene, quindi

245
00:15:45,270 --> 00:15:50,270
‫solo per finire, lasciamo qui il processo, ricominciamo e, naturalmente,

246
00:15:50,370 --> 00:15:54,350
‫vediamo se funziona ancora, cosa che fa.

247
00:15:54,350 --> 00:15:58,340
‫E così, il nostro lavoro è finito qui. Quindi abbiamo finito con questa

248
00:15:58,340 --> 00:16:01,343
‫lezione e siamo pronti per passare direttamente alla prossima.

