﻿1
00:00:01,270 --> 00:00:04,633
‫-: Muy bien, ahora vamos a trabajar con streams.

2
00:00:06,140 --> 00:00:09,363
‫Y nuevamente, comenzando por crear un nuevo archivo.

3
00:00:13,160 --> 00:00:16,370
‫Está bien. Ahora digamos que por

4
00:00:16,370 --> 00:00:20,440
‫alguna razón en nuestra aplicación, necesitamos leer un archivo de texto grande

5
00:00:20,440 --> 00:00:23,800
‫del sistema de archivos y luego enviarlo al cliente.

6
00:00:23,800 --> 00:00:25,640
‫Entonces, ¿cómo haríamos eso?

7
00:00:25,640 --> 00:00:28,650
‫Bueno, hay varias formas y vamos a explorar

8
00:00:28,650 --> 00:00:31,630
‫algunas de ellas, comenzando con la

9
00:00:31,630 --> 00:00:35,320
‫más básica y avanzando hasta la mejor manera de hacerlo.

10
00:00:35,320 --> 00:00:39,090
‫Bien, entonces lo primero es requerir el paquete del

11
00:00:39,090 --> 00:00:43,220
‫sistema de archivos como antes, y también el módulo HTTP.

12
00:00:46,810 --> 00:00:49,600
‫Permítanme mostrarles un buen truco, así que

13
00:00:49,600 --> 00:00:52,183
‫creemos un servidor como este.

14
00:00:53,770 --> 00:00:58,770
‫Entonces, requiera el paquete HTTP, y luego desde aquí podemos

15
00:00:59,530 --> 00:01:04,530
‫llamar de inmediato a createServer. Así que así.

16
00:01:05,550 --> 00:01:09,720
‫Bien, entonces el resultado de requerir HTTP, es el

17
00:01:09,720 --> 00:01:13,700
‫objeto HTTP y allí podemos usar createServer.

18
00:01:13,700 --> 00:01:16,690
‫Así, y luego guárdelo en una variable.

19
00:01:16,690 --> 00:01:19,620
‫Así que esa es otra forma de crear un nuevo servidor

20
00:01:19,620 --> 00:01:21,943
‫escribiendo incluso un poco menos de código.

21
00:01:24,530 --> 00:01:29,530
‫De acuerdo, al igual que antes, ahora enumeremos el evento

22
00:01:29,970 --> 00:01:34,970
‫de solicitud y especifiquemos nuestra devolución de llamada aquí.

23
00:01:38,550 --> 00:01:41,190
‫Entonces, la primera solución que vamos a utilizar

24
00:01:41,190 --> 00:01:43,600
‫es la más sencilla y directa.

25
00:01:43,600 --> 00:01:46,690
‫Que es simplemente leer el archivo en una variable, y

26
00:01:46,690 --> 00:01:49,350
‫luego, una vez hecho esto, enviarlo al cliente

27
00:01:49,350 --> 00:01:52,020
‫de la forma en que ya sabemos cómo hacerlo.

28
00:01:52,020 --> 00:01:54,660
‫Así que esa es muy simple, y déjame escribir

29
00:01:54,660 --> 00:01:58,410
‫un comentario aquí para eso. Entonces solución

30
00:01:58,410 --> 00:02:03,410
‫uno, y así fs. readFile y luego nuestro archivo de prueba nuevamente.

31
00:02:09,100 --> 00:02:12,720
‫Y luego, una vez que esté listo, llamamos a nuestra función de devolución de

32
00:02:12,720 --> 00:02:15,270
‫llamada en la que tenemos acceso a los datos.

33
00:02:15,270 --> 00:02:17,703
‫Pero primero manejemos el error.

34
00:02:20,930 --> 00:02:24,880
‫Entonces, por ejemplo, en caso de que el archivo no exista, y

35
00:02:24,880 --> 00:02:28,250
‫en ese caso simplemente registramos el error en la consola.

36
00:02:28,250 --> 00:02:32,340
‫Pero de lo contrario, simplemente enviamos estos datos al cliente.

37
00:02:32,340 --> 00:02:35,280
‫Entonces usamos el objeto de respuesta como lo

38
00:02:35,280 --> 00:02:40,280
‫hicimos antes muchas veces, y luego. end y los datos.

39
00:02:40,610 --> 00:02:44,010
‫Entonces, dale un guardado, y esa es la primera

40
00:02:44,010 --> 00:02:46,363
‫y la solución más simple, ¿verdad?

41
00:02:47,450 --> 00:02:50,460
‫Pero antes de que podamos probar esto, también

42
00:02:51,470 --> 00:02:55,433
‫necesitamos iniciar un servidor, ¿verdad? Entonces usamos listen para hacer eso.

43
00:02:56,770 --> 00:03:01,603
‫Y el puerto, el mismo que antes, luego localhost y nuestra función

44
00:03:03,440 --> 00:03:05,253
‫de devolución de llamada.

45
00:03:12,960 --> 00:03:15,353
‫Bien, veamos si esto realmente funciona.

46
00:03:24,080 --> 00:03:27,880
‫Y por supuesto que no, porque en realidad ni siquiera

47
00:03:27,880 --> 00:03:29,023
‫inicié la aplicación.

48
00:03:31,260 --> 00:03:33,810
‫Entonces ahora dice escuchar, y ahora veamos qué

49
00:03:33,810 --> 00:03:34,853
‫pasa aquí.

50
00:03:35,730 --> 00:03:39,565
‫Y aquí vamos. Entonces este archivo es

51
00:03:39,565 --> 00:03:42,960
‫enorme, tiene Node. js es el mejor escrito en

52
00:03:42,960 --> 00:03:46,080
‫él como 10000 veces o algo así, por lo que lleva mucho

53
00:03:46,080 --> 00:03:49,760
‫tiempo hasta que se cargue por completo. Y no estamos realmente interesados

54
00:03:49,760 --> 00:03:53,010
‫en cargar todo, así que detengamos esto aquí y

55
00:03:53,010 --> 00:03:56,430
‫regresemos a nuestro código. Entonces esto funciona bien, la

56
00:03:56,430 --> 00:03:59,480
‫solución que tenemos aquí en este caso, pero el problema

57
00:03:59,480 --> 00:04:01,970
‫es que con esta solución, el nodo en

58
00:04:01,970 --> 00:04:04,660
‫realidad tendrá que cargar todo el archivo en la

59
00:04:04,660 --> 00:04:07,610
‫memoria, porque solo después de que esté listo, puede

60
00:04:07,610 --> 00:04:10,890
‫enviar esos datos . Ahora bien, esto es un problema

61
00:04:10,890 --> 00:04:14,120
‫cuando el archivo es grande, y también cuando hay un montón de

62
00:04:14,120 --> 00:04:17,240
‫solicitudes llegando a su servidor. Debido a que

63
00:04:17,240 --> 00:04:21,464
‫el proceso del nodo se quedará sin recursos muy rápidamente y

64
00:04:21,464 --> 00:04:25,740
‫su aplicación dejará de funcionar, todo se bloqueará y sus usuarios

65
00:04:25,740 --> 00:04:28,940
‫no estarán felices, créanme. Entonces, esta solución

66
00:04:28,940 --> 00:04:31,500
‫aquí funciona cuando solo estamos creando algo

67
00:04:31,500 --> 00:04:33,990
‫pequeño localmente solo para nosotros, por ejemplo.

68
00:04:33,990 --> 00:04:37,030
‫Pero en una aplicación lista para producción, no puede usar un

69
00:04:37,030 --> 00:04:41,270
‫fragmento de código como este. ¿Okey? Así que pasemos a

70
00:04:41,270 --> 00:04:44,070
‫nuestra segunda solución. Y

71
00:04:44,070 --> 00:04:46,933
‫en esa solución, usaremos flujos.

72
00:04:48,760 --> 00:04:52,420
‫Bien, comentemos esta parte y pasemos

73
00:04:52,420 --> 00:04:55,890
‫a la solución número dos.

74
00:04:55,890 --> 00:04:58,270
‫Y la idea aquí es que

75
00:04:58,270 --> 00:05:03,000
‫en realidad no necesitamos leer estos datos del archivo en una variable, ¿verdad?

76
00:05:03,000 --> 00:05:05,860
‫No necesitamos esta variable. Entonces, en lugar de

77
00:05:05,860 --> 00:05:09,310
‫leer los datos en una variable y tener que almacenar

78
00:05:09,310 --> 00:05:12,710
‫esa variable en la memoria, simplemente crearemos un flujo legible.

79
00:05:12,710 --> 00:05:15,490
‫Luego, a medida que recibimos cada fragmento de datos,

80
00:05:15,490 --> 00:05:17,920
‫lo enviamos al cliente como respuesta, que

81
00:05:17,920 --> 00:05:20,440
‫es un flujo de escritura que se recuerda.

82
00:05:20,440 --> 00:05:22,963
‫Permítanme mostrarles cómo podemos usar las transmisiones.

83
00:05:24,570 --> 00:05:28,823
‫Entonces creamos una variable, llamémosla legible aquí, y luego desde

84
00:05:30,025 --> 00:05:33,437
‫el sistema de archivos nuevamente, usamos createReadStream Entonces

85
00:05:39,450 --> 00:05:44,450
‫esto, por supuesto, es pequeño. Y ahora el nombre del archivo

86
00:05:44,820 --> 00:05:49,820
‫que estamos intentando leer. Eso es de nuevo, test-file. TXT.

87
00:05:50,580 --> 00:05:54,130
‫De acuerdo, perfecto. Entonces, esto ahora crea una secuencia a

88
00:05:54,130 --> 00:05:57,090
‫partir de los datos que están en este archivo de texto, que

89
00:05:57,090 --> 00:06:00,540
‫luego podemos consumir pieza por pieza. Así que trozo a trozo.

90
00:06:00,540 --> 00:06:03,350
‫¿Y cómo hacemos eso? Bueno, recuerde de

91
00:06:03,350 --> 00:06:06,600
‫la última conferencia, que cada vez que hay un

92
00:06:06,600 --> 00:06:10,020
‫nuevo dato que podemos consumir, un flujo legible emite

93
00:06:10,020 --> 00:06:13,070
‫el evento de datos. Bien, entonces podemos escuchar eso,

94
00:06:13,070 --> 00:06:15,313
‫tal como aprendimos en la conferencia de eventos.

95
00:06:17,220 --> 00:06:22,220
‫Tan legible. on, data y luego nuestra función de devolución de llamada.

96
00:06:23,690 --> 00:06:26,910
‫Y en nuestra función de devolución de llamada, tenemos acceso a

97
00:06:26,910 --> 00:06:28,993
‫ese dato, es decir, a ese fragmento.

98
00:06:30,160 --> 00:06:32,660
‫Permítanme llamarlo fragmento aquí en nuestra función

99
00:06:33,540 --> 00:06:37,100
‫de devolución de llamada y ahora podemos manejar este dato.

100
00:06:37,100 --> 00:06:39,060
‫Y lo que vamos a

101
00:06:39,060 --> 00:06:42,010
‫hacer con este dato, con este fragmento, es

102
00:06:42,010 --> 00:06:45,210
‫escribirlo en un flujo de escritura, que es la respuesta.

103
00:06:45,210 --> 00:06:50,210
‫Entonces, res. escribe, este trozo. ¿Okey?

104
00:06:51,250 --> 00:06:54,080
‫Recuerde nuevamente que esta respuesta es un

105
00:06:54,080 --> 00:06:57,760
‫flujo de escritura. Entonces, tal como mencioné

106
00:06:57,760 --> 00:07:01,540
‫en el video anterior, ¿verdad? Y ahora podemos usar

107
00:07:01,540 --> 00:07:06,110
‫el método de escritura para enviar cada pieza de datos a ese flujo.

108
00:07:06,110 --> 00:07:08,920
‫Bien, y con esto efectivamente estamos

109
00:07:08,920 --> 00:07:12,230
‫transmitiendo el contenido del archivo directamente al cliente.

110
00:07:12,230 --> 00:07:14,300
‫¿Entiendes la diferencia?

111
00:07:14,300 --> 00:07:17,710
‫Entonces, antes, escribíamos todo a la vez en una variable, y

112
00:07:17,710 --> 00:07:21,000
‫una vez que estaba listo, enviamos esa pieza completa de datos

113
00:07:21,000 --> 00:07:23,927
‫de regreso al cliente. Pero en esta

114
00:07:23,927 --> 00:07:26,370
‫situación, con la corriente, es diferente.

115
00:07:26,370 --> 00:07:29,730
‫Estamos transmitiendo el archivo de manera efectiva, por lo que

116
00:07:29,730 --> 00:07:32,670
‫leemos una parte del archivo y, tan pronto

117
00:07:32,670 --> 00:07:37,440
‫como esté disponible, lo enviamos directamente al cliente, utilizando el método de escritura

118
00:07:37,440 --> 00:07:40,990
‫del flujo de respuesta. Luego, cuando la siguiente

119
00:07:40,990 --> 00:07:44,290
‫pieza esté disponible, esa pieza se enviará y hasta

120
00:07:44,290 --> 00:07:48,390
‫que todo el archivo se lea y se transmita al cliente.

121
00:07:48,390 --> 00:07:51,650
‫Bien, ahora solo para terminar, también tenemos que manejar

122
00:07:51,650 --> 00:07:54,680
‫el evento cuando se leen todos los datos.

123
00:07:54,680 --> 00:07:57,430
‫Entonces, cuando la transmisión básicamente termina de leer los datos

124
00:07:57,430 --> 00:07:58,263
‫del archivo.

125
00:07:59,580 --> 00:08:03,113
‫Entonces, en ese caso, se emitirá el evento final,

126
00:08:05,810 --> 00:08:10,040
‫y tan pronto como eso suceda, lo que vamos a hacer

127
00:08:10,040 --> 00:08:15,040
‫es hacer res. final, ¿de acuerdo? Y usamos este

128
00:08:16,430 --> 00:08:21,220
‫antes, así que terminando la respuesta, lo hicimos antes, ¿verdad?

129
00:08:21,220 --> 00:08:25,000
‫Y ahora, en realidad tiene más sentido, porque nuevamente, la

130
00:08:25,000 --> 00:08:28,540
‫respuesta también es una secuencia, y el método final

131
00:08:28,540 --> 00:08:31,820
‫indica que no se escribirán más datos en esta

132
00:08:31,820 --> 00:08:34,090
‫secuencia de escritura, ¿de acuerdo?

133
00:08:34,090 --> 00:08:39,080
‫Así que aquí todo lo que hicimos fue usar res. terminar con los datos

134
00:08:39,080 --> 00:08:41,970
‫que contiene. Así que no hicimos streaming,

135
00:08:41,970 --> 00:08:44,490
‫todo lo que hicimos al final fue enviar algunos datos.

136
00:08:44,490 --> 00:08:46,470
‫Ahora, en este caso, no estamos

137
00:08:46,470 --> 00:08:50,000
‫pasando nada a este método final, porque ya enviamos todos los

138
00:08:50,000 --> 00:08:52,930
‫datos usando res. escribir, fragmento a fragmento,

139
00:08:52,930 --> 00:08:55,550
‫por lo que cuando la secuencia legible termine

140
00:08:55,550 --> 00:08:59,220
‫de leer su archivo, todo lo que tenemos que hacer es

141
00:08:59,220 --> 00:09:03,330
‫indicar que estamos listos usando res. terminar así, ¿de acuerdo?

142
00:09:03,330 --> 00:09:07,910
‫Por lo tanto, siempre necesitamos usar estos datos y este evento final aquí uno tras

143
00:09:07,910 --> 00:09:11,160
‫otro de esta manera. Porque de

144
00:09:11,160 --> 00:09:14,030
‫lo contrario, la respuesta nunca se

145
00:09:14,030 --> 00:09:17,340
‫enviará realmente al cliente. Bien, sin esta pieza

146
00:09:17,340 --> 00:09:20,230
‫aquí, toda esta solución no funcionaría realmente, ¿de acuerdo?

147
00:09:20,230 --> 00:09:25,000
‫Así que cerremos este, empecemos de nuevo y leamos

148
00:09:25,000 --> 00:09:30,000
‫de nuevo, para que veas que en realidad está funcionando

149
00:09:30,880 --> 00:09:35,670
‫de nuevo, ¿de acuerdo? Ahora esta vez sin los problemas que

150
00:09:35,670 --> 00:09:39,400
‫tuvimos con la primera solución. Detengamos esto aquí y

151
00:09:39,400 --> 00:09:41,770
‫volvamos a nuestro código, porque quiero mostrarles

152
00:09:41,770 --> 00:09:44,260
‫ahora que hay otro evento que podemos escuchar

153
00:09:44,260 --> 00:09:47,403
‫en una secuencia legible, que es el evento de error.

154
00:09:49,240 --> 00:09:54,240
‫Tan legible. on ('error') y en esta función de

155
00:09:55,000 --> 00:09:57,733
‫devolución de llamada tenemos acceso al objeto de error.

156
00:09:58,810 --> 00:10:03,683
‫Bien, en este caso registraremos este error en la consola

157
00:10:05,970 --> 00:10:10,593
‫y luego enviaremos el resultado del archivo no encontrado.

158
00:10:14,400 --> 00:10:17,283
‫Y también podemos establecer el código de estado en

159
00:10:20,160 --> 00:10:23,772
‫un error, por ejemplo, 500. Por lo general, se establece

160
00:10:23,772 --> 00:10:28,020
‫automáticamente en 200, lo que significa que está bien, pero en este caso tenemos un

161
00:10:28,020 --> 00:10:31,420
‫error del servidor, lo que significa que queremos devolver el código 500.

162
00:10:31,420 --> 00:10:36,213
‫Muy bien, ahora vamos ...

163
00:10:37,390 --> 00:10:39,313
‫De hecho, necesito dejar esto de nuevo.

164
00:10:45,520 --> 00:10:46,970
‫Así que veamos qué pasa ahora.

165
00:10:53,001 --> 00:10:54,870
‫Oh, ya tenemos un error aquí

166
00:10:54,870 --> 00:10:57,790
‫mismo, res. el estado no es una función. Y sí,

167
00:10:57,790 --> 00:11:00,872
‫en realidad es statusCode. Así que esta es

168
00:11:00,872 --> 00:11:05,100
‫la forma en que lo escribes en express, así que ya estoy acostumbrado a

169
00:11:05,100 --> 00:11:10,100
‫escribir express tanto que express es un nodo. js que vamos a usar en

170
00:11:10,370 --> 00:11:12,150
‫el resto del curso y

171
00:11:12,150 --> 00:11:15,060
‫en express lo haces así, y ese

172
00:11:15,060 --> 00:11:18,420
‫era el problema. Así que ya estoy un poco

173
00:11:18,420 --> 00:11:19,673
‫acostumbrado a escribir express.

174
00:11:22,460 --> 00:11:26,470
‫Así que regresemos, y sí, ahora vemos el archivo no encontrado, y

175
00:11:26,470 --> 00:11:31,090
‫si abrimos las herramientas de desarrollo, verá nuestro código de error 500 que acabamos de

176
00:11:31,090 --> 00:11:34,823
‫enviar antes, y si vamos a nuestra pestaña de red, intentemos

177
00:11:36,440 --> 00:11:39,840
‫eso de nuevo. también tiene el código de estado aquí.

178
00:11:39,840 --> 00:11:43,990
‫Así que, al igual que vimos en uno de los videos anteriores en

179
00:11:43,990 --> 00:11:47,130
‫otra sección, en realidad. Así es como podemos inspeccionar

180
00:11:47,130 --> 00:11:49,343
‫este tipo de cosas en la pestaña de red.

181
00:11:52,530 --> 00:11:57,343
‫Muy bien, solucionémoslo aquí, guardémoslo, y de acuerdo, esto

182
00:11:58,300 --> 00:12:03,300
‫nuevamente funciona perfectamente, pero todavía hay un problema con

183
00:12:03,550 --> 00:12:06,240
‫este enfoque que les acabo

184
00:12:06,240 --> 00:12:09,360
‫de mostrar. Y el problema es

185
00:12:09,360 --> 00:12:12,240
‫que nuestro flujo legible, por lo que el que

186
00:12:12,240 --> 00:12:16,100
‫estamos usando para leer el archivo desde el disco, es mucho más

187
00:12:16,100 --> 00:12:19,310
‫rápido que enviar el resultado con el flujo grabable de

188
00:12:19,310 --> 00:12:22,910
‫respuesta a través de la red. Y esto abrumará el

189
00:12:22,910 --> 00:12:27,360
‫flujo de respuesta, que no puede manejar todos estos datos entrantes tan rápido.

190
00:12:27,360 --> 00:12:29,920
‫Y este problema se llama contrapresión.

191
00:12:29,920 --> 00:12:33,510
‫Y es un problema real que puede ocurrir en situaciones reales.

192
00:12:33,510 --> 00:12:37,140
‫Entonces, en este caso, la contrapresión ocurre cuando la

193
00:12:37,140 --> 00:12:41,130
‫respuesta no puede enviar los datos tan rápido como los

194
00:12:41,130 --> 00:12:43,620
‫recibe del archivo, ¿tiene sentido?

195
00:12:43,620 --> 00:12:46,050
‫Así que tenemos que arreglar

196
00:12:46,050 --> 00:12:48,793
‫esa solución y encontrar una aún mejor.

197
00:12:50,130 --> 00:12:52,813
‫Entonces, crearemos la solución tres, y

198
00:12:55,120 --> 00:12:57,527
‫esa es en realidad la

199
00:12:57,527 --> 00:13:01,150
‫última, ¿de acuerdo? Así que no hay más soluciones que tres.

200
00:13:01,150 --> 00:13:05,000
‫Entonces, el secreto aquí es usar ese operador de tubería que mencioné

201
00:13:05,000 --> 00:13:07,405
‫en el último video, ¿de acuerdo?

202
00:13:07,405 --> 00:13:12,405
‫Entonces, el operador de tubería está disponible en todas las secuencias legibles y

203
00:13:12,960 --> 00:13:16,760
‫nos permite canalizar la salida de una secuencia legible

204
00:13:16,760 --> 00:13:20,660
‫directamente a la entrada de una secuencia de escritura, ¿de acuerdo?

205
00:13:20,660 --> 00:13:24,010
‫Y eso solucionará el problema de la contrapresión porque

206
00:13:24,010 --> 00:13:27,340
‫automáticamente manejará la velocidad básicamente de los datos

207
00:13:27,340 --> 00:13:31,260
‫que ingresan y la velocidad de los datos que salen.

208
00:13:31,260 --> 00:13:35,603
‫Bien, obtengamos nuestra transmisión legible aquí.

209
00:13:38,290 --> 00:13:41,290
‫De acuerdo, esa es nuestra secuencia legible, y ahora

210
00:13:41,290 --> 00:13:45,253
‫todo lo que tenemos que hacer es tomar nuestra secuencia legible, usar

211
00:13:46,280 --> 00:13:50,650
‫el método de tubería en ella y luego poner una secuencia de escritura y

212
00:13:50,650 --> 00:13:53,900
‫esa es la respuesta. Y eso es todo.

213
00:13:53,900 --> 00:13:57,460
‫Eso es todo lo que tenemos que hacer para esta solución, ¿de acuerdo?

214
00:13:57,460 --> 00:13:59,960
‫Así que siempre funciona así,

215
00:13:59,960 --> 00:14:04,960
‫déjame escribirlo aquí como comentario. Entonces, básicamente, necesitamos una fuente legible, de

216
00:14:06,040 --> 00:14:09,310
‫acuerdo, de nuevo, esto es solo para explicárselo, luego podemos

217
00:14:09,310 --> 00:14:12,330
‫usar la tubería en él, y aquí tendremos que

218
00:14:12,330 --> 00:14:17,010
‫poner un destino de escritura. Entonces, aquí es de donde

219
00:14:17,010 --> 00:14:19,980
‫provienen nuestros datos, y tiene que ser un

220
00:14:19,980 --> 00:14:24,980
‫flujo legible, y esos datos luego podemos canalizarlos a un destino de escritura.

221
00:14:25,060 --> 00:14:29,520
‫Entonces, en este caso, nuestro destino es la respuesta, ¿de acuerdo?

222
00:14:29,520 --> 00:14:32,790
‫Ahora bien, este flujo aquí puede ser un flujo dúplex o

223
00:14:32,790 --> 00:14:35,790
‫de transformación también, pero lo que importa es que podemos

224
00:14:35,790 --> 00:14:38,930
‫escribir en el flujo. Y la respuesta, por supuesto,

225
00:14:38,930 --> 00:14:42,553
‫es una corriente de este tipo. Entonces, por supuesto, podemos escribir

226
00:14:42,553 --> 00:14:45,560
‫la respuesta que se enviará al cliente, ¿de acuerdo?

227
00:14:45,560 --> 00:14:48,890
‫Entonces el operador de tubería resuelve automáticamente el

228
00:14:48,890 --> 00:14:51,860
‫problema de contrapresión que teníamos anteriormente.

229
00:14:51,860 --> 00:14:54,720
‫Y también es una solución mucho más

230
00:14:54,720 --> 00:14:58,000
‫elegante y sencilla. Entonces, lo que hicimos

231
00:14:58,000 --> 00:15:01,020
‫aquí antes fue solo mostrarle todas las formas en

232
00:15:01,020 --> 00:15:05,290
‫que podemos usar los métodos y eventos de transmisión para crear este tipo

233
00:15:05,290 --> 00:15:08,520
‫de solución y, por supuesto, tienen muchos casos de uso,

234
00:15:08,520 --> 00:15:12,044
‫pero en un problema como este, la tubería El operador es

235
00:15:12,044 --> 00:15:16,060
‫en realidad la mejor solución. Detrás de escena, en realidad, hace

236
00:15:16,060 --> 00:15:17,950
‫algo como esto aquí, pero

237
00:15:17,950 --> 00:15:20,880
‫nuevamente de una manera mucho más directa para que

238
00:15:20,880 --> 00:15:23,000
‫escribamos, porque maneja todas las cosas

239
00:15:23,000 --> 00:15:26,500
‫internamente detrás de escena. Así que creo que la

240
00:15:26,500 --> 00:15:30,370
‫tubería aquí es en realidad la forma más fácil de consumir y

241
00:15:30,370 --> 00:15:33,410
‫escribir secuencias, a menos que, por supuesto, como mencioné,

242
00:15:33,410 --> 00:15:36,670
‫necesitemos soluciones más personalizadas. Y luego, tenemos que

243
00:15:36,670 --> 00:15:39,910
‫usar estas herramientas más complicadas como estos eventos y

244
00:15:39,910 --> 00:15:43,633
‫métodos que les mostré antes. Muy bien, para

245
00:15:45,270 --> 00:15:50,270
‫terminar, salgamos del proceso aquí, empecemos de nuevo y, por

246
00:15:50,370 --> 00:15:54,350
‫supuesto, veamos si todavía funciona, lo cual funciona.

247
00:15:54,350 --> 00:15:58,340
‫Y así, nuestro trabajo está hecho aquí. Así que hemos terminado con esta

248
00:15:58,340 --> 00:16:01,343
‫conferencia y estamos listos para pasar directamente a la siguiente.

