﻿1
00:00:01,140 --> 00:00:02,740
‫-: Hablemos ahora de

2
00:00:02,740 --> 00:00:06,790
‫los problemas que pueden surgir cuando usamos demasiadas funciones de devolución de llamada.

3
00:00:06,790 --> 00:00:07,650
‫Y para

4
00:00:07,650 --> 00:00:09,760
‫hacer eso, haremos un pequeño ejemplo

5
00:00:09,760 --> 00:00:11,440
‫para ilustrar este efecto.

6
00:00:11,440 --> 00:00:14,620
‫Ahora recuerde que si ya está familiarizado con Promises

7
00:00:14,620 --> 00:00:17,130
‫y Async / Await y, en general,

8
00:00:17,130 --> 00:00:18,590
‫Asynchronous Java Script, no

9
00:00:18,590 --> 00:00:21,180
‫dude en omitir esta sección y marcar

10
00:00:21,180 --> 00:00:23,860
‫todos los videos como completados para que aún

11
00:00:23,860 --> 00:00:26,500
‫pueda completar el 100 por ciento de

12
00:00:26,500 --> 00:00:27,730
‫la curso.

13
00:00:27,730 --> 00:00:28,910
‫Pero si desea

14
00:00:28,910 --> 00:00:30,350
‫aprender todo sobre Asynchronous

15
00:00:30,350 --> 00:00:33,283
‫Java Script y cómo usarlo en OJS, sigamos adelante.

16
00:00:35,020 --> 00:00:35,853
‫Así que

17
00:00:35,853 --> 00:00:38,670
‫adelante, obtenga los archivos de inicio para este proyecto de

18
00:00:38,670 --> 00:00:39,940
‫los archivos del curso.

19
00:00:39,940 --> 00:00:41,510
‫Ya lo tengo aquí en mi escritorio,

20
00:00:41,510 --> 00:00:42,940
‫así que esta carpeta aquí.

21
00:00:42,940 --> 00:00:44,850
‫Y es solo este archivo allí,

22
00:00:44,850 --> 00:00:47,950
‫así que eso es todo lo que necesitaremos para comenzar.

23
00:00:47,950 --> 00:00:50,410
‫Y lo tengo aquí en VS Code ya abierto y lo

24
00:00:50,410 --> 00:00:51,680
‫que vamos a hacer para

25
00:00:51,680 --> 00:00:54,680
‫comenzar es simplemente crear un NX. Archivo JS.

26
00:00:54,680 --> 00:00:56,220
‫Justo como antes.

27
00:00:56,220 --> 00:00:58,130
‫Ahora lo que vamos a hacer es

28
00:00:58,130 --> 00:00:59,920
‫esto, vamos a usar este,

29
00:00:59,920 --> 00:01:02,320
‫este archivo de perro aquí, este archivo de texto.

30
00:01:02,320 --> 00:01:06,040
‫Y a partir de aquí leeremos la raza canina.

31
00:01:06,040 --> 00:01:08,570
‫Y luego haremos una solicitud HTTP para

32
00:01:08,570 --> 00:01:12,020
‫obtener una imagen aleatoria de un perro con esta raza.

33
00:01:12,020 --> 00:01:14,790
‫Y luego guarde esa imagen aleatoria en

34
00:01:14,790 --> 00:01:16,440
‫otro archivo de texto.

35
00:01:16,440 --> 00:01:18,410
‫Así que es un proceso de tres

36
00:01:18,410 --> 00:01:20,860
‫pasos y todo esto implicará funciones de devolución de llamada.

37
00:01:20,860 --> 00:01:23,330
‫Y al final veremos el problema que tenemos cuando usamos

38
00:01:23,330 --> 00:01:25,130
‫todas estas funciones de devolución de llamada

39
00:01:25,130 --> 00:01:26,610
‫unas dentro de otras.

40
00:01:26,610 --> 00:01:27,443
‫¿Okey?

41
00:01:27,443 --> 00:01:29,360
‫Entonces, para eso, usaremos una

42
00:01:29,360 --> 00:01:31,140
‫API bastante popular.

43
00:01:31,140 --> 00:01:33,670
‫Que es más como una API divertida.

44
00:01:33,670 --> 00:01:34,980
‫Pero para este tipo

45
00:01:34,980 --> 00:01:36,620
‫de cosas es una buena idea usarlo.

46
00:01:36,620 --> 00:01:39,800
‫Entonces es el PERRO. CEO, API.

47
00:01:39,800 --> 00:01:42,140
‫Así que solo presiona Dog API aquí.

48
00:01:42,140 --> 00:01:43,540
‫Luego

49
00:01:43,540 --> 00:01:45,360
‫aquí, la documentación.

50
00:01:45,360 --> 00:01:48,060
‫Y lo que queremos es conseguir un perro al azar,

51
00:01:48,060 --> 00:01:49,500
‫o una raza determinada.

52
00:01:49,500 --> 00:01:52,090
‫Así que haga clic aquí por raza.

53
00:01:52,090 --> 00:01:52,993
‫Y aquí

54
00:01:54,790 --> 00:01:58,620
‫abajo, aquí está el punto final de la API que vamos a alcanzar.

55
00:01:58,620 --> 00:02:00,293
‫Entonces es esta URL aquí.

56
00:02:01,750 --> 00:02:03,530
‫Entonces, cuando haces clic en buscar aquí,

57
00:02:03,530 --> 00:02:05,580
‫cada vez que obtienes una nueva imagen, ¿de acuerdo?

58
00:02:05,580 --> 00:02:06,413
‫Y así,

59
00:02:06,413 --> 00:02:08,670
‫en esta sección, de hecho, haremos una

60
00:02:08,670 --> 00:02:10,420
‫solicitud HTTP tal como aprendimos antes

61
00:02:10,420 --> 00:02:11,850
‫en la sección anterior.

62
00:02:11,850 --> 00:02:12,683
‫Bueno.

63
00:02:12,683 --> 00:02:14,090
‫Entonces, todo lo

64
00:02:14,090 --> 00:02:17,741
‫que tendremos que hacer es crear una solicitud HTTP a esta

65
00:02:17,741 --> 00:02:19,890
‫URL y luego nos devolverá una imagen.

66
00:02:19,890 --> 00:02:20,780
‫¿Okey?

67
00:02:20,780 --> 00:02:22,820
‫Pero por ahora, comencemos con una parte en

68
00:02:22,820 --> 00:02:25,290
‫la que leemos el archivo y obtenemos el contenido de

69
00:02:25,290 --> 00:02:26,143
‫ese archivo.

70
00:02:27,900 --> 00:02:31,980
‫Entonces en nuestro index. js, nuevamente necesitamos el paquete o módulo

71
00:02:31,980 --> 00:02:33,440
‫del sistema de archivos.

72
00:02:33,440 --> 00:02:34,273
‫Entonces FS

73
00:02:38,260 --> 00:02:40,743
‫y requiere el módulo FS aquí.

74
00:02:41,720 --> 00:02:44,960
‫Y al igual que antes, hacemos fs. readfile y

75
00:02:44,960 --> 00:02:47,320
‫hacemos la versión asincrónica.

76
00:02:47,320 --> 00:02:48,153
‫Bueno.

77
00:02:48,153 --> 00:02:51,150
‫Recuerde que aquí pasamos la ubicación del archivo y luego una

78
00:02:51,150 --> 00:02:52,480
‫función de devolución de

79
00:02:52,480 --> 00:02:55,623
‫llamada que se llamará tan pronto como terminemos de leer el archivo.

80
00:02:56,800 --> 00:02:58,420
‫Entonces tenemos nuestra cadena de plantilla aquí.

81
00:02:58,420 --> 00:03:01,733
‫Y luego usamos un nombre de directorio como lo hicimos antes.

82
00:03:02,820 --> 00:03:04,670
‫Entonces el nombre del directorio actual.

83
00:03:07,778 --> 00:03:08,963
‫/perro. TXT.

84
00:03:11,040 --> 00:03:13,260
‫Bien, y luego nuestra función de devolución

85
00:03:13,260 --> 00:03:16,303
‫de llamada, que el primer argumento como siempre es error.

86
00:03:19,490 --> 00:03:22,750
‫Y luego los datos que realmente están en el archivo.

87
00:03:22,750 --> 00:03:23,940
‫Y solo para asegurarnos,

88
00:03:23,940 --> 00:03:25,393
‫logrémoslo en la consola, por supuesto.

89
00:03:27,340 --> 00:03:28,530
‫Entonces, otra cadena

90
00:03:28,530 --> 00:03:31,893
‫de plantilla para que podamos generar nuestros datos aquí.

91
00:03:33,200 --> 00:03:34,200
‫Bueno.

92
00:03:34,200 --> 00:03:36,040
‫Arranca la terminal aquí

93
00:03:36,040 --> 00:03:37,620
‫y súbela un

94
00:03:37,620 --> 00:03:38,870
‫poco.

95
00:03:40,120 --> 00:03:42,830
‫Y entonces estoy usando nodemon como lo hice antes

96
00:03:42,830 --> 00:03:44,893
‫y luego index. js.

97
00:03:46,220 --> 00:03:48,400
‫De acuerdo, la raza es un perro perdiguero.

98
00:03:48,400 --> 00:03:51,270
‫Y eso es exactamente lo que tenemos aquí en este archivo.

99
00:03:51,270 --> 00:03:56,053
‫De acuerdo, el perro perdiguero es la raza que buscaremos.

100
00:03:57,390 --> 00:03:59,050
‫Ahora, dentro de esta función

101
00:03:59,050 --> 00:04:01,520
‫de devolución de llamada, queremos hacer esa solicitud HTTP

102
00:04:01,520 --> 00:04:03,340
‫de la que acabamos de hablar antes.

103
00:04:03,340 --> 00:04:05,360
‫Y en realidad hay formas

104
00:04:05,360 --> 00:04:06,660
‫de hacerlo

105
00:04:06,660 --> 00:04:07,980
‫sin módulos JS nativos.

106
00:04:07,980 --> 00:04:10,850
‫Pero es más fácil usar un paquete NPM para eso.

107
00:04:10,850 --> 00:04:12,100
‫Y hay muchos de nuevo,

108
00:04:12,100 --> 00:04:14,560
‫pero el que vamos a usar se llama Super Agent.

109
00:04:14,560 --> 00:04:16,750
‫Más adelante usaremos otro, pero

110
00:04:16,750 --> 00:04:20,710
‫por ahora Super Agent está bien para eso, está bien.

111
00:04:20,710 --> 00:04:24,140
‫Y para descargar este módulo usando NPM, comenzaremos

112
00:04:24,140 --> 00:04:27,410
‫creando nuestro archivo de paquete Jason.

113
00:04:27,410 --> 00:04:28,940
‫¿Recuérdalo?

114
00:04:28,940 --> 00:04:31,120
‫Así que déjame terminar esto y

115
00:04:31,120 --> 00:04:32,703
‫hacer NPM en él.

116
00:04:33,780 --> 00:04:36,423
‫Y simplemente presione enter en todos estos.

117
00:04:37,340 --> 00:04:38,460
‫Esto realmente no importa.

118
00:04:38,460 --> 00:04:39,293
‫Bueno.

119
00:04:39,293 --> 00:04:40,920
‫Solo queremos este paquete. jason

120
00:04:40,920 --> 00:04:43,370
‫para que realmente contenga el nombre del paquete

121
00:04:43,370 --> 00:04:44,290
‫que estamos usando.

122
00:04:44,290 --> 00:04:47,130
‫Así que siempre hacemos eso cada vez que comenzamos un nuevo proyecto.

123
00:04:47,130 --> 00:04:48,630
‫Y ahora NPM instala, o

124
00:04:48,630 --> 00:04:52,240
‫simplemente podemos usar la I, que es lo mismo y luego el

125
00:04:52,240 --> 00:04:53,490
‫nombre del paquete.

126
00:04:53,490 --> 00:04:55,023
‫Así que no hay nada nuevo allí, ¿verdad?

127
00:04:58,510 --> 00:04:59,840
‫Ahora para usar

128
00:04:59,840 --> 00:05:01,270
‫este paquete, creamos una

129
00:05:01,270 --> 00:05:04,200
‫nueva variable que luego contendrá la función Super

130
00:05:04,200 --> 00:05:06,473
‫Agent que este módulo nos expone.

131
00:05:16,410 --> 00:05:19,350
‫Ahora sigamos adelante y usemos esa función de

132
00:05:19,350 --> 00:05:20,320
‫Super Agent.

133
00:05:20,320 --> 00:05:22,180
‫Entonces, para hacer una solicitud de

134
00:05:22,180 --> 00:05:24,363
‫obtención, simplemente usamos el método de obtención en ella.

135
00:05:25,400 --> 00:05:28,400
‫Así que obtén y luego necesitamos esa URL.

136
00:05:28,400 --> 00:05:31,860
‫De acuerdo, este que les mostré antes.

137
00:05:31,860 --> 00:05:32,880
‫Así que cópielo

138
00:05:33,870 --> 00:05:34,970
‫y péguelo aquí en

139
00:05:35,980 --> 00:05:37,110
‫una cadena de plantilla.

140
00:05:37,110 --> 00:05:39,870
‫Porque ahora vamos a reemplazar

141
00:05:39,870 --> 00:05:41,830
‫esta raza aquí.

142
00:05:41,830 --> 00:05:43,430
‫Bien, no queremos

143
00:05:43,430 --> 00:05:45,250
‫eso, sino que queremos

144
00:05:45,250 --> 00:05:47,840
‫usarlo, el que obtenemos de nuestro archivo.

145
00:05:47,840 --> 00:05:49,920
‫Entonces, en este caso, son datos.

146
00:05:49,920 --> 00:05:50,790
‫¿Derecha?

147
00:05:50,790 --> 00:05:51,750
‫Y

148
00:05:51,750 --> 00:05:55,160
‫así, podemos hacer una solicitud HTTP get.

149
00:05:55,160 --> 00:05:57,510
‫Ahora, para obtener los

150
00:05:57,510 --> 00:06:01,970
‫datos, también tendremos que usar el método end en esto.

151
00:06:01,970 --> 00:06:04,090
‫Y aquí es donde pasaremos la función de

152
00:06:04,090 --> 00:06:05,240
‫devolución de llamada.

153
00:06:07,210 --> 00:06:09,060
‫Entonces, nuevamente, es un error la primera

154
00:06:09,060 --> 00:06:10,500
‫llamada de regreso y

155
00:06:10,500 --> 00:06:12,000
‫luego pasamos el resultado también.

156
00:06:12,900 --> 00:06:14,660
‫Entonces, en esta

157
00:06:14,660 --> 00:06:15,920
‫función, primero

158
00:06:15,920 --> 00:06:18,620
‫registremos el resultado en la consola.

159
00:06:18,620 --> 00:06:21,920
‫Entonces, los datos que obtenemos están en la variable de respuesta.

160
00:06:21,920 --> 00:06:22,997
‫Así que este de aquí.

161
00:06:22,997 --> 00:06:25,960
‫Y luego está el cuerpo.

162
00:06:25,960 --> 00:06:29,430
‫Entonces ahí es donde está la respuesta real.

163
00:06:29,430 --> 00:06:31,830
‫Bien, ahora sigamos adelante y probemos eso.

164
00:06:32,780 --> 00:06:35,180
‫Y ahora, con este guardado aquí, en realidad se movió hacia abajo.

165
00:06:35,180 --> 00:06:36,420
‫De nuevo, eso

166
00:06:36,420 --> 00:06:39,850
‫se debe a la extensión anterior que configuramos anteriormente.

167
00:06:39,850 --> 00:06:41,170
‫Y tal vez también

168
00:06:41,170 --> 00:06:44,520
‫notó cómo reemplazó las comillas normales que tenía aquí con

169
00:06:44,520 --> 00:06:45,560
‫estas comillas

170
00:06:45,560 --> 00:06:48,810
‫dobles y también insertó el punto y coma aquí.

171
00:06:48,810 --> 00:06:50,610
‫Y de hecho, en la última

172
00:06:50,610 --> 00:06:52,110
‫sección, o en una

173
00:06:52,110 --> 00:06:54,130
‫de las últimas secciones, lo configuramos para

174
00:06:54,130 --> 00:06:56,180
‫que siempre tengamos bien las comillas simples.

175
00:06:56,180 --> 00:06:58,530
‫Entonces, para mantener nuestro código consistente

176
00:06:58,530 --> 00:07:00,060
‫aquí, sigamos adelante

177
00:07:00,060 --> 00:07:03,760
‫y creemos muy rápidamente el archivo de configuración más bonito.

178
00:07:03,760 --> 00:07:05,293
‫Así que recuerda que eso es más bonito.

179
00:07:08,320 --> 00:07:10,343
‫Luego, tenemos comillas simples.

180
00:07:11,670 --> 00:07:13,023
‫Configúrelo en verdadero.

181
00:07:14,470 --> 00:07:17,063
‫Y también recuerda el ancho de impresión.

182
00:07:19,140 --> 00:07:20,990
‫Y ajústelo a 80.

183
00:07:20,990 --> 00:07:22,373
‫Está bien, dale una oportunidad.

184
00:07:23,450 --> 00:07:24,520
‫Guarde este de nuevo.

185
00:07:24,520 --> 00:07:27,800
‫Y como ve, tenemos nuestras comillas simples ahora de vuelta.

186
00:07:27,800 --> 00:07:30,380
‫Entonces eso se ve mucho mejor en mi opinión.

187
00:07:30,380 --> 00:07:32,630
‫Nuevamente, si no le gusta de esta

188
00:07:32,630 --> 00:07:35,000
‫manera, por supuesto, puede usar su propia configuración.

189
00:07:35,000 --> 00:07:36,090
‫Está bien.

190
00:07:36,090 --> 00:07:36,923
‫De todos

191
00:07:36,923 --> 00:07:38,780
‫modos, este fragmento de código aquí

192
00:07:38,780 --> 00:07:41,130
‫ya debería estar haciendo la solicitud HTTP.

193
00:07:41,130 --> 00:07:41,963
‫Así que,

194
00:07:41,963 --> 00:07:43,143
‫de hecho, probémoslo.

195
00:07:45,980 --> 00:07:46,910
‫Y

196
00:07:46,910 --> 00:07:49,530
‫de hecho, tenemos esta imagen aquí.

197
00:07:49,530 --> 00:07:50,710
‫Entonces, en realidad,

198
00:07:50,710 --> 00:07:52,660
‫lo que queremos está dentro de

199
00:07:52,660 --> 00:07:54,700
‫este amigo en la propiedad del mensaje.

200
00:07:54,700 --> 00:07:55,533
‫Así que puntee

201
00:07:56,460 --> 00:07:57,293
‫el mensaje.

202
00:07:57,293 --> 00:07:58,390
‫Así que así.

203
00:07:58,390 --> 00:08:02,390
‫Y aquí tenemos nuestra imagen de perro perdiguero.

204
00:08:02,390 --> 00:08:05,190
‫Sigamos adelante y cambiemos la raza aquí.

205
00:08:05,190 --> 00:08:06,660
‫Y no soy muy bueno con los perros.

206
00:08:06,660 --> 00:08:09,890
‫Usemos esta raza aquí que conozco,

207
00:08:09,890 --> 00:08:10,860
‫Labrador.

208
00:08:10,860 --> 00:08:12,460
‫Ni siquiera sé cómo decirlo.

209
00:08:15,470 --> 00:08:16,630
‫Pero creo

210
00:08:16,630 --> 00:08:18,210
‫que lo es, existe.

211
00:08:18,210 --> 00:08:20,200
‫Vamos a salvarlo aquí de nuevo.

212
00:08:20,200 --> 00:08:22,520
‫Y ahora tenemos otra imagen.

213
00:08:22,520 --> 00:08:24,730
‫De hecho, podemos hacer clic aquí y

214
00:08:24,730 --> 00:08:26,913
‫se abrirá esa imagen para nosotros.

215
00:08:29,790 --> 00:08:30,623
‫Bueno.

216
00:08:30,623 --> 00:08:33,590
‫Entonces, para hacer esta solicitud HTTP aquí, necesitábamos

217
00:08:33,590 --> 00:08:35,660
‫los datos que obtuvimos antes.

218
00:08:35,660 --> 00:08:37,280
‫Así que este dato.

219
00:08:37,280 --> 00:08:39,890
‫Entonces, necesitábamos hacer esta solicitud aquí dentro de esta

220
00:08:39,890 --> 00:08:42,250
‫función de devolución de llamada de la función

221
00:08:42,250 --> 00:08:44,150
‫de lectura de archivo, ¿verdad?

222
00:08:44,150 --> 00:08:46,630
‫Y entonces ya tiene una función de devolución de llamada aquí.

223
00:08:46,630 --> 00:08:48,883
‫Así que este dentro de una devolución de llamada.

224
00:08:49,810 --> 00:08:52,000
‫Pero ahora agregaremos otro.

225
00:08:52,000 --> 00:08:54,600
‫Porque ahora queremos guardar esta cadena aquí en

226
00:08:54,600 --> 00:08:56,300
‫un nuevo archivo de texto.

227
00:08:56,300 --> 00:08:57,870
‫Y así lo haremos aquí.

228
00:08:57,870 --> 00:09:00,010
‫Y luego eso nuevamente tendrá otra función

229
00:09:00,010 --> 00:09:01,270
‫de devolución de llamada.

230
00:09:01,270 --> 00:09:02,243
‫Vale, ¿tiene sentido?

231
00:09:03,750 --> 00:09:04,583
‫Entonces fs

232
00:09:05,607 --> 00:09:06,440
‫writefile

233
00:09:07,333 --> 00:09:09,580
‫y luego el nombre del archivo.

234
00:09:09,580 --> 00:09:12,990
‫Llamemos a esa imagen de un perro. texto.

235
00:09:12,990 --> 00:09:15,440
‫Luego, los datos que queremos guardar en ese archivo que

236
00:09:15,440 --> 00:09:18,430
‫está en reposo. cuerpo. mensaje.

237
00:09:18,430 --> 00:09:19,800
‫Y luego la función de devolución de llamada.

238
00:09:19,800 --> 00:09:21,960
‫Y este no tendrá ningún dato, por

239
00:09:21,960 --> 00:09:23,853
‫supuesto, pero tenemos el error nuevamente.

240
00:09:28,500 --> 00:09:30,390
‫Vamos a registrar algo en la consola

241
00:09:30,390 --> 00:09:32,140
‫como una imagen de perro aleatoria

242
00:09:32,140 --> 00:09:33,733
‫guardada en un archivo.

243
00:09:35,930 --> 00:09:38,010
‫Guárdelo, luego se volverá a

244
00:09:38,860 --> 00:09:41,950
‫ejecutar y aquí está nuestro archivo de imagen.

245
00:09:41,950 --> 00:09:44,030
‫Y, de hecho, puede ver que el

246
00:09:44,030 --> 00:09:46,373
‫código VS muestra esa imagen aquí para nosotros.

247
00:09:48,060 --> 00:09:50,090
‫Déle otro guardado aquí, luego

248
00:09:50,090 --> 00:09:52,210
‫volverá a ejecutar nuestro código

249
00:09:52,210 --> 00:09:54,420
‫y ahora lo tenemos, de hecho,

250
00:09:54,420 --> 00:09:56,290
‫tenemos una imagen diferente.

251
00:09:56,290 --> 00:09:57,230
‫Está bien.

252
00:09:57,230 --> 00:10:00,000
‫Entonces nuestro código realmente está funcionando.

253
00:10:00,000 --> 00:10:02,050
‫Agreguemos un pequeño identificador de error aquí en

254
00:10:02,050 --> 00:10:03,943
‫caso de que algo salga mal.

255
00:10:04,830 --> 00:10:08,593
‫Por ejemplo, digamos que agregamos un nombre extraño aquí.

256
00:10:10,050 --> 00:10:11,120
‫Ejecute esto de nuevo.

257
00:10:11,120 --> 00:10:13,860
‫Y ahora mismo no podrá encontrar una imagen

258
00:10:13,860 --> 00:10:14,700
‫para eso.

259
00:10:14,700 --> 00:10:17,683
‫Y eso en realidad resultará en un error aquí.

260
00:10:18,620 --> 00:10:19,620
‫Por lo tanto, siempre

261
00:10:19,620 --> 00:10:22,300
‫debemos hacer este tipo de manejo de errores al

262
00:10:22,300 --> 00:10:23,290
‫principio y

263
00:10:23,290 --> 00:10:24,943
‫decirlo si hubo un error,

264
00:10:27,060 --> 00:10:29,010
‫y podemos simplemente registrar el error. mensaje.

265
00:10:30,247 --> 00:10:31,830
‫Y en realidad también deberíamos decir

266
00:10:31,830 --> 00:10:34,670
‫que queremos volver de inmediato desde esta función si hay un error.

267
00:10:34,670 --> 00:10:37,330
‫Por lo que volverá y se registrará

268
00:10:37,330 --> 00:10:39,450
‫en la consola, este error.

269
00:10:39,450 --> 00:10:41,550
‫Y entonces no pasará nada más.

270
00:10:41,550 --> 00:10:43,840
‫Bueno.

271
00:10:43,840 --> 00:10:45,140
‫Por lo que dice de nuevo, no se encuentra aquí.

272
00:10:45,140 --> 00:10:46,920
‫Y no guardó nada en

273
00:10:46,920 --> 00:10:49,770
‫el archivo porque ya regresamos de la función aquí.

274
00:10:49,770 --> 00:10:52,870
‫¿Okey?

275
00:10:52,870 --> 00:10:53,703
‫Y lo mismo en realidad aquí abajo

276
00:10:53,703 --> 00:10:55,250
‫en caso de que haya un error al guardar el archivo en el disco.

277
00:10:55,250 --> 00:10:59,513
‫Regresemos aquí, salvemos de

278
00:11:00,870 --> 00:11:02,173
‫nuevo.

279
00:11:03,670 --> 00:11:04,780
‫Y ahora está funcionando bien de nuevo.

280
00:11:04,780 --> 00:11:07,923
‫Bueno.

281
00:11:08,860 --> 00:11:09,693
‫Así que este es

282
00:11:09,693 --> 00:11:10,526
‫solo un pequeño

283
00:11:10,526 --> 00:11:13,100
‫ejemplo para mostrarle lo fácil que es terminar con devoluciones de llamada

284
00:11:13,100 --> 00:11:15,770
‫dentro de las devoluciones de llamada dentro de las devoluciones de llamada.

285
00:11:15,770 --> 00:11:17,100
‫Y eso es, por supuesto, porque,

286
00:11:17,100 --> 00:11:18,390
‫ya sabemos que en

287
00:11:18,390 --> 00:11:20,400
‫Note JS, siempre debemos usar código asincrónico, ¿verdad?

288
00:11:20,400 --> 00:11:23,160
‫Terminamos usando devoluciones de llamada dentro de las devoluciones

289
00:11:23,160 --> 00:11:25,870
‫de llamada dentro de las devoluciones de llamada.

290
00:11:25,870 --> 00:11:27,090
‫Y, por supuesto, a

291
00:11:27,090 --> 00:11:30,170
‫veces puede ser incluso más profundo de lo que tenemos aquí.

292
00:11:30,170 --> 00:11:31,003
‫Por supuesto, podría

293
00:11:31,003 --> 00:11:33,010
‫tener como 10 niveles uno dentro del otro.

294
00:11:33,010 --> 00:11:34,600
‫Ahora todas estas devoluciones de llamada, hacen

295
00:11:34,600 --> 00:11:36,230
‫que nuestro código se vea un poco desordenado.

296
00:11:36,230 --> 00:11:38,920
‫Hace que sea difícil de entender y también,

297
00:11:38,920 --> 00:11:40,760
‫en general, difícil de mantener.

298
00:11:40,760 --> 00:11:43,680
‫Una vez más, tal vez no en este nivel con solo tres devoluciones de

299
00:11:43,680 --> 00:11:45,050
‫llamada una dentro de la otra.

300
00:11:45,050 --> 00:11:48,200
‫Pero si lo tuviéramos aún más anidado, rápidamente

301
00:11:48,200 --> 00:11:50,300
‫podría convertirse en una

302
00:11:50,300 --> 00:11:53,080
‫pesadilla mantener un código como este.

303
00:11:53,080 --> 00:11:54,920
‫Y es por eso que

304
00:11:54,920 --> 00:11:56,840
‫este patrón ha sido llamado infierno.

305
00:11:56,840 --> 00:11:58,200
‫Es fácil

306
00:11:58,200 --> 00:12:01,450
‫identificar esta forma triangular en nuestro código.

307
00:12:01,450 --> 00:12:02,283
‫Es lo que tenemos aquí.

308
00:12:02,283 --> 00:12:04,050
‫Como este tipo de forma triangular.

309
00:12:04,050 --> 00:12:07,170
‫Siempre que veas esto, es una señal de que

310
00:12:07,170 --> 00:12:08,620
‫básicamente estás en

311
00:12:08,620 --> 00:12:10,100
‫el infierno de llamadas.

312
00:12:10,100 --> 00:12:11,970
‫¿Okey?

313
00:12:11,970 --> 00:12:12,803
‫Y tal vez

314
00:12:12,803 --> 00:12:15,160
‫vea o escuche este término cuando haga una investigación

315
00:12:15,160 --> 00:12:17,100
‫de Note JS o algo como esto.

316
00:12:17,100 --> 00:12:19,000
‫Pero en este momento, esta es en realidad

317
00:12:19,000 --> 00:12:21,200
‫la única forma que conocemos de cómo escribir código asincrónico

318
00:12:21,200 --> 00:12:22,140
‫en este momento.

319
00:12:22,140 --> 00:12:25,350
‫Pero lo guardaremos en el resto de

320
00:12:25,350 --> 00:12:26,890
‫esta pequeña sección.

321
00:12:26,890 --> 00:12:29,120
‫Entonces, aprenderemos a usar

322
00:12:29,120 --> 00:12:30,810
‫algo llamado Promesas.

323
00:12:30,810 --> 00:12:32,550
‫Y eso finalmente resolverá nuestro

324
00:12:32,550 --> 00:12:33,820
‫problema y hará

325
00:12:33,820 --> 00:12:37,080
‫que nuestro código sea más fácil de leer y mantener.

326
00:12:37,080 --> 00:12:38,570
‫Así que hagámoslo en el resto de la sección.

