﻿1
00:00:01,140 --> 00:00:02,740
‫-: Então, vamos agora falar

2
00:00:02,740 --> 00:00:06,790
‫sobre os problemas que podem surgir quando usamos muitas funções de retorno de chamada.

3
00:00:06,790 --> 00:00:07,650
‫E para

4
00:00:07,650 --> 00:00:09,760
‫fazer isso, vamos fazer um pequeno

5
00:00:09,760 --> 00:00:11,440
‫exemplo para ilustrar esse efeito.

6
00:00:11,440 --> 00:00:14,620
‫Agora lembre-se de que se você já está familiarizado com

7
00:00:14,620 --> 00:00:17,130
‫Promises e Async / Await e, em geral,

8
00:00:17,130 --> 00:00:18,590
‫Asynchronous Java Script, sinta-se

9
00:00:18,590 --> 00:00:21,180
‫à vontade para pular esta seção e marcar

10
00:00:21,180 --> 00:00:23,860
‫todos os vídeos como concluídos para que você

11
00:00:23,860 --> 00:00:26,500
‫ainda possa chegar a 100 por cento de

12
00:00:26,500 --> 00:00:27,730
‫conclusão do curso.

13
00:00:27,730 --> 00:00:28,910
‫Mas se você

14
00:00:28,910 --> 00:00:30,350
‫quiser aprender tudo sobre Java

15
00:00:30,350 --> 00:00:33,283
‫Script Assíncrono e como usá-lo no OJS, vamos prosseguir.

16
00:00:35,020 --> 00:00:35,853
‫Portanto, vá

17
00:00:35,853 --> 00:00:38,670
‫em frente e obtenha os arquivos iniciais para este projeto

18
00:00:38,670 --> 00:00:39,940
‫nos arquivos do curso.

19
00:00:39,940 --> 00:00:41,510
‫Já tenho aqui no meu desktop,

20
00:00:41,510 --> 00:00:42,940
‫então esta pasta aqui.

21
00:00:42,940 --> 00:00:44,850
‫E é apenas este arquivo

22
00:00:44,850 --> 00:00:47,950
‫lá, então é tudo de que precisamos para começar.

23
00:00:47,950 --> 00:00:50,410
‫E eu tenho isso aqui no VS Code já aberto e

24
00:00:50,410 --> 00:00:51,680
‫o que vamos fazer para

25
00:00:51,680 --> 00:00:54,680
‫começar é apenas criar um NX. Arquivo JS.

26
00:00:54,680 --> 00:00:56,220
‫Assim como antes.

27
00:00:56,220 --> 00:00:58,130
‫Agora o que vamos fazer é

28
00:00:58,130 --> 00:00:59,920
‫isso, vamos usar esse,

29
00:00:59,920 --> 00:01:02,320
‫esse arquivo dog aqui, esse arquivo de texto.

30
00:01:02,320 --> 00:01:06,040
‫E a partir daqui vamos ler a raça do cão.

31
00:01:06,040 --> 00:01:08,570
‫E então faremos uma solicitação HTTP para

32
00:01:08,570 --> 00:01:12,020
‫obter uma imagem aleatória de um cachorro com esta raça.

33
00:01:12,020 --> 00:01:14,790
‫E então salve aquela imagem aleatória em

34
00:01:14,790 --> 00:01:16,440
‫outro arquivo de texto.

35
00:01:16,440 --> 00:01:18,410
‫Portanto, é um processo de três etapas

36
00:01:18,410 --> 00:01:20,860
‫e tudo isso envolverá funções de retorno de chamada.

37
00:01:20,860 --> 00:01:23,330
‫E no final veremos o problema que temos quando usamos

38
00:01:23,330 --> 00:01:25,130
‫todas essas funções de retorno de chamada

39
00:01:25,130 --> 00:01:26,610
‫umas dentro das outras.

40
00:01:26,610 --> 00:01:27,443
‫OK?

41
00:01:27,443 --> 00:01:29,360
‫Então, para isso, vamos usar

42
00:01:29,360 --> 00:01:31,140
‫uma API bastante popular.

43
00:01:31,140 --> 00:01:33,670
‫O que é mais como uma API divertida.

44
00:01:33,670 --> 00:01:34,980
‫Mas, para esse tipo

45
00:01:34,980 --> 00:01:36,620
‫de coisa, é uma boa ideia usá-lo.

46
00:01:36,620 --> 00:01:39,800
‫Portanto, é o CÃO. CEO, API.

47
00:01:39,800 --> 00:01:42,140
‫Então, basta clicar na API Dog aqui.

48
00:01:42,140 --> 00:01:43,540
‫Então

49
00:01:43,540 --> 00:01:45,360
‫aqui, a documentação.

50
00:01:45,360 --> 00:01:48,060
‫E o que queremos é conseguir um cachorro aleatório,

51
00:01:48,060 --> 00:01:49,500
‫ou uma determinada raça.

52
00:01:49,500 --> 00:01:52,090
‫Então clique por raça aqui.

53
00:01:52,090 --> 00:01:52,993
‫E aqui

54
00:01:54,790 --> 00:01:58,620
‫embaixo, aqui está o endpoint da API que iremos atingir.

55
00:01:58,620 --> 00:02:00,293
‫Portanto, é este URL aqui.

56
00:02:01,750 --> 00:02:03,530
‫Então, quando você clica em buscar aqui,

57
00:02:03,530 --> 00:02:05,580
‫a cada vez você obtém uma nova imagem, certo?

58
00:02:05,580 --> 00:02:06,413
‫E,

59
00:02:06,413 --> 00:02:08,670
‫portanto, nesta seção, faremos a solicitação

60
00:02:08,670 --> 00:02:10,420
‫HTTP exatamente como aprendemos

61
00:02:10,420 --> 00:02:11,850
‫na seção anterior.

62
00:02:11,850 --> 00:02:12,683
‫OK.

63
00:02:12,683 --> 00:02:14,090
‫Portanto, tudo o que

64
00:02:14,090 --> 00:02:17,741
‫teremos de fazer é criar uma solicitação HTTP para esse URL e, em

65
00:02:17,741 --> 00:02:19,890
‫seguida, ele nos trará de volta uma imagem.

66
00:02:19,890 --> 00:02:20,780
‫OK?

67
00:02:20,780 --> 00:02:22,820
‫Mas, por agora, vamos começar com uma parte

68
00:02:22,820 --> 00:02:25,290
‫em que lemos o arquivo e obtemos o conteúdo

69
00:02:25,290 --> 00:02:26,143
‫desse arquivo.

70
00:02:27,900 --> 00:02:31,980
‫Então, em nosso índice. js, mais uma vez, precisamos do pacote ou

71
00:02:31,980 --> 00:02:33,440
‫módulo do sistema de arquivos.

72
00:02:33,440 --> 00:02:34,273
‫Então FS

73
00:02:38,260 --> 00:02:40,743
‫e exija o módulo FS aqui.

74
00:02:41,720 --> 00:02:44,960
‫E assim como antes de fazermos o fs. readfile e

75
00:02:44,960 --> 00:02:47,320
‫fazemos a versão assíncrona.

76
00:02:47,320 --> 00:02:48,153
‫OK.

77
00:02:48,153 --> 00:02:51,150
‫Lembre-se de que aqui passamos a localização do arquivo e, em seguida,

78
00:02:51,150 --> 00:02:52,480
‫uma função de retorno

79
00:02:52,480 --> 00:02:55,623
‫de chamada que será chamada assim que terminarmos de ler o arquivo.

80
00:02:56,800 --> 00:02:58,420
‫Portanto, temos nossa string de modelo aqui.

81
00:02:58,420 --> 00:03:01,733
‫E então usamos um dirname como fizemos antes.

82
00:03:02,820 --> 00:03:04,670
‫Portanto, o nome do diretório atual.

83
00:03:07,778 --> 00:03:08,963
‫/cão. TXT.

84
00:03:11,040 --> 00:03:13,260
‫Ok e então nossa função de retorno

85
00:03:13,260 --> 00:03:16,303
‫de chamada, cujo primeiro argumento, como sempre, é o erro.

86
00:03:19,490 --> 00:03:22,750
‫E então os dados que realmente estão no arquivo.

87
00:03:22,750 --> 00:03:23,940
‫E só para ter

88
00:03:23,940 --> 00:03:25,393
‫certeza, vamos registrá-lo no console, é claro.

89
00:03:27,340 --> 00:03:28,530
‫Então, outra string

90
00:03:28,530 --> 00:03:31,893
‫de modelo para que possamos gerar nossos dados de maneira agradável aqui.

91
00:03:33,200 --> 00:03:34,200
‫OK.

92
00:03:34,200 --> 00:03:36,040
‫Inicie o terminal aqui

93
00:03:36,040 --> 00:03:37,620
‫e aumente um

94
00:03:37,620 --> 00:03:38,870
‫pouco.

95
00:03:40,120 --> 00:03:42,830
‫E então estou usando o nodemon exatamente como fiz antes e,

96
00:03:42,830 --> 00:03:44,893
‫em seguida, o índice. js.

97
00:03:46,220 --> 00:03:48,400
‫Ok, então raça é retriever.

98
00:03:48,400 --> 00:03:51,270
‫E é exatamente isso que temos aqui neste arquivo.

99
00:03:51,270 --> 00:03:56,053
‫Ok, então retriever é a raça que estaremos procurando.

100
00:03:57,390 --> 00:03:59,050
‫Agora, dentro dessa função

101
00:03:59,050 --> 00:04:01,520
‫de retorno de chamada, queremos fazer aquela solicitação

102
00:04:01,520 --> 00:04:03,340
‫HTTP de que falamos antes.

103
00:04:03,340 --> 00:04:05,360
‫E há maneiras de fazer isso

104
00:04:05,360 --> 00:04:06,660
‫com módulos nativos

105
00:04:06,660 --> 00:04:07,980
‫e sem módulos JS.

106
00:04:07,980 --> 00:04:10,850
‫Mas é mais fácil usar apenas um pacote NPM para isso.

107
00:04:10,850 --> 00:04:12,100
‫E há muitos de

108
00:04:12,100 --> 00:04:14,560
‫novo, mas o que vamos usar se chama Super Agente.

109
00:04:14,560 --> 00:04:16,750
‫Mais tarde, vamos usar outro,

110
00:04:16,750 --> 00:04:20,710
‫mas por enquanto o Super Agente está bem para isso, ok.

111
00:04:20,710 --> 00:04:24,140
‫E para realmente baixar este módulo usando NPM, vamos

112
00:04:24,140 --> 00:04:27,410
‫começar criando nosso arquivo Jason de pacote.

113
00:04:27,410 --> 00:04:28,940
‫Lembre-se disso?

114
00:04:28,940 --> 00:04:31,120
‫Então, deixe-me terminar isso e fazer

115
00:04:31,120 --> 00:04:32,703
‫o NPM nele.

116
00:04:33,780 --> 00:04:36,423
‫E apenas pressione Enter em todos eles.

117
00:04:37,340 --> 00:04:38,460
‫Isso realmente não importa.

118
00:04:38,460 --> 00:04:39,293
‫OK.

119
00:04:39,293 --> 00:04:40,920
‫Queremos apenas este pacote. arquivo jason

120
00:04:40,920 --> 00:04:43,370
‫para que ele realmente contenha o nome do pacote

121
00:04:43,370 --> 00:04:44,290
‫que estamos usando.

122
00:04:44,290 --> 00:04:47,130
‫Portanto, sempre fazemos isso sempre que iniciamos um novo projeto.

123
00:04:47,130 --> 00:04:48,630
‫E agora instale o NPM,

124
00:04:48,630 --> 00:04:52,240
‫ou podemos apenas usar o I, que é o mesmo e depois

125
00:04:52,240 --> 00:04:53,490
‫o nome do pacote.

126
00:04:53,490 --> 00:04:55,023
‫Então, nada de novo aí, certo?

127
00:04:58,510 --> 00:04:59,840
‫Agora, para usar

128
00:04:59,840 --> 00:05:01,270
‫este pacote, criamos uma

129
00:05:01,270 --> 00:05:04,200
‫nova variável que irá conter a função Super

130
00:05:04,200 --> 00:05:06,473
‫Agent que este módulo nos expõe.

131
00:05:16,410 --> 00:05:19,350
‫Vamos agora usar a função Super

132
00:05:19,350 --> 00:05:20,320
‫Agent.

133
00:05:20,320 --> 00:05:22,180
‫Portanto, para fazer uma solicitação

134
00:05:22,180 --> 00:05:24,363
‫get, simplesmente usamos o método get nela.

135
00:05:25,400 --> 00:05:28,400
‫Então pegue e então precisamos desse URL.

136
00:05:28,400 --> 00:05:31,860
‫Ok, então esse que eu mostrei antes.

137
00:05:31,860 --> 00:05:32,880
‫Então, apenas copie

138
00:05:33,870 --> 00:05:34,970
‫e cole aqui em

139
00:05:35,980 --> 00:05:37,110
‫uma string de modelo.

140
00:05:37,110 --> 00:05:39,870
‫Porque agora vamos substituir essa

141
00:05:39,870 --> 00:05:41,830
‫raça aqui.

142
00:05:41,830 --> 00:05:43,430
‫Ok, então não queremos

143
00:05:43,430 --> 00:05:45,250
‫isso, mas em vez disso,

144
00:05:45,250 --> 00:05:47,840
‫queremos usá-lo, aquele que obtemos de nosso arquivo.

145
00:05:47,840 --> 00:05:49,920
‫Portanto, neste caso, são os dados.

146
00:05:49,920 --> 00:05:50,790
‫Direito?

147
00:05:50,790 --> 00:05:51,750
‫E

148
00:05:51,750 --> 00:05:55,160
‫assim, podemos realmente fazer uma solicitação HTTP get.

149
00:05:55,160 --> 00:05:57,510
‫Agora, para obter os

150
00:05:57,510 --> 00:06:01,970
‫dados, também teremos que usar o método end nisso.

151
00:06:01,970 --> 00:06:04,090
‫E é aqui que vamos passar a função

152
00:06:04,090 --> 00:06:05,240
‫de retorno de chamada.

153
00:06:07,210 --> 00:06:09,060
‫Então, novamente, é um erro, primeiro

154
00:06:09,060 --> 00:06:10,500
‫ligue de volta e

155
00:06:10,500 --> 00:06:12,000
‫então passamos o resultado também.

156
00:06:12,900 --> 00:06:14,660
‫E assim, nesta

157
00:06:14,660 --> 00:06:15,920
‫função, vamos

158
00:06:15,920 --> 00:06:18,620
‫primeiro registrar o resultado no console.

159
00:06:18,620 --> 00:06:21,920
‫Portanto, os dados que obtemos estão na variável de resposta.

160
00:06:21,920 --> 00:06:22,997
‫Então, este aqui.

161
00:06:22,997 --> 00:06:25,960
‫E aí está o corpo.

162
00:06:25,960 --> 00:06:29,430
‫Então é aí que está a resposta real.

163
00:06:29,430 --> 00:06:31,830
‫Ok, agora vamos realmente testar isso.

164
00:06:32,780 --> 00:06:35,180
‫E agora, com esse save aqui, ele realmente desceu.

165
00:06:35,180 --> 00:06:36,420
‫Novamente, isso

166
00:06:36,420 --> 00:06:39,850
‫é por causa da extensão anterior que configuramos anteriormente.

167
00:06:39,850 --> 00:06:41,170
‫E talvez você também

168
00:06:41,170 --> 00:06:44,520
‫tenha notado como ele substituiu as aspas normais que eu tinha

169
00:06:44,520 --> 00:06:45,560
‫aqui por essas

170
00:06:45,560 --> 00:06:48,810
‫aspas duplas e também inseriu o ponto e vírgula aqui.

171
00:06:48,810 --> 00:06:50,610
‫E, na verdade, na última

172
00:06:50,610 --> 00:06:52,110
‫seção, ou em uma

173
00:06:52,110 --> 00:06:54,130
‫das últimas seções, nós configuramos isso de

174
00:06:54,130 --> 00:06:56,180
‫forma que sempre tenhamos as aspas simples.

175
00:06:56,180 --> 00:06:58,530
‫E assim, para manter nosso código consistente

176
00:06:58,530 --> 00:07:00,060
‫aqui, vamos realmente

177
00:07:00,060 --> 00:07:03,760
‫prosseguir e criar rapidamente o arquivo de configuração mais bonito.

178
00:07:03,760 --> 00:07:05,293
‫Portanto, lembre-se de que é excelente.

179
00:07:08,320 --> 00:07:10,343
‫Em seguida, temos aspas simples.

180
00:07:11,670 --> 00:07:13,023
‫Defina como verdadeiro.

181
00:07:14,470 --> 00:07:17,063
‫E lembre-se também da largura de impressão.

182
00:07:19,140 --> 00:07:20,990
‫E defina-o para 80.

183
00:07:20,990 --> 00:07:22,373
‫Ok, salve.

184
00:07:23,450 --> 00:07:24,520
‫Salve este novamente.

185
00:07:24,520 --> 00:07:27,800
‫E então você vê que temos nossas aspas simples agora de volta.

186
00:07:27,800 --> 00:07:30,380
‫Então isso parece muito melhor na minha opinião.

187
00:07:30,380 --> 00:07:32,630
‫Novamente, se você não gostar dessa forma,

188
00:07:32,630 --> 00:07:35,000
‫é claro que você pode usar suas próprias configurações.

189
00:07:35,000 --> 00:07:36,090
‫Tudo bem.

190
00:07:36,090 --> 00:07:36,923
‫De qualquer

191
00:07:36,923 --> 00:07:38,780
‫forma, este pedaço de código aqui

192
00:07:38,780 --> 00:07:41,130
‫já deve estar fazendo a solicitação HTTP.

193
00:07:41,130 --> 00:07:41,963
‫Então,

194
00:07:41,963 --> 00:07:43,143
‫vamos testar isso.

195
00:07:45,980 --> 00:07:46,910
‫E,

196
00:07:46,910 --> 00:07:49,530
‫de fato, temos essa imagem aqui.

197
00:07:49,530 --> 00:07:50,710
‫Então, na verdade,

198
00:07:50,710 --> 00:07:52,660
‫o que queremos está dentro

199
00:07:52,660 --> 00:07:54,700
‫desse amigo na propriedade da mensagem.

200
00:07:54,700 --> 00:07:55,533
‫Então, mensagem

201
00:07:56,460 --> 00:07:57,293
‫de ponto.

202
00:07:57,293 --> 00:07:58,390
‫Então, assim.

203
00:07:58,390 --> 00:08:02,390
‫E aqui temos nossa imagem retriever.

204
00:08:02,390 --> 00:08:05,190
‫Vamos em frente e realmente mudar a raça aqui.

205
00:08:05,190 --> 00:08:06,660
‫E não sou muito bom com cães.

206
00:08:06,660 --> 00:08:09,890
‫Vamos apenas usar esta raça que eu

207
00:08:09,890 --> 00:08:10,860
‫conheço, Labrador.

208
00:08:10,860 --> 00:08:12,460
‫Eu nem sei como dizer.

209
00:08:15,470 --> 00:08:16,630
‫Mas acho

210
00:08:16,630 --> 00:08:18,210
‫que é isso, existe.

211
00:08:18,210 --> 00:08:20,200
‫Vamos salvá-lo aqui novamente.

212
00:08:20,200 --> 00:08:22,520
‫E agora temos outra imagem.

213
00:08:22,520 --> 00:08:24,730
‫Na verdade, podemos clicar aqui e essa

214
00:08:24,730 --> 00:08:26,913
‫imagem será aberta para nós.

215
00:08:29,790 --> 00:08:30,623
‫OK.

216
00:08:30,623 --> 00:08:33,590
‫Portanto, para fazer essa solicitação HTTP aqui, precisamos

217
00:08:33,590 --> 00:08:35,660
‫dos dados que obtivemos antes.

218
00:08:35,660 --> 00:08:37,280
‫Portanto, este dado.

219
00:08:37,280 --> 00:08:39,890
‫E então precisávamos fazer essa solicitação aqui dentro

220
00:08:39,890 --> 00:08:42,250
‫dessa função de retorno de chamada da função

221
00:08:42,250 --> 00:08:44,150
‫de leitura de arquivo, certo?

222
00:08:44,150 --> 00:08:46,630
‫E então você já tem uma função de retorno de chamada aqui.

223
00:08:46,630 --> 00:08:48,883
‫Então, este dentro de um retorno de chamada.

224
00:08:49,810 --> 00:08:52,000
‫Mas agora vamos adicionar outro.

225
00:08:52,000 --> 00:08:54,600
‫Porque agora queremos salvar esta string aqui em

226
00:08:54,600 --> 00:08:56,300
‫um novo arquivo de texto.

227
00:08:56,300 --> 00:08:57,870
‫E então faremos isso aqui.

228
00:08:57,870 --> 00:09:00,010
‫E então isso novamente terá outra função

229
00:09:00,010 --> 00:09:01,270
‫de retorno de chamada.

230
00:09:01,270 --> 00:09:02,243
‫Ok, faz sentido?

231
00:09:03,750 --> 00:09:04,583
‫Portanto, fs

232
00:09:05,607 --> 00:09:06,440
‫writefile e,

233
00:09:07,333 --> 00:09:09,580
‫em seguida, o nome do arquivo.

234
00:09:09,580 --> 00:09:12,990
‫Vamos chamar isso de imagem de um cachorro. texto.

235
00:09:12,990 --> 00:09:15,440
‫Em seguida, os dados que queremos salvar naquele arquivo que

236
00:09:15,440 --> 00:09:18,430
‫está em repouso. corpo. mensagem.

237
00:09:18,430 --> 00:09:19,800
‫E então a função de retorno de chamada.

238
00:09:19,800 --> 00:09:21,960
‫E este aqui não terá nenhum dado é

239
00:09:21,960 --> 00:09:23,853
‫claro, mas temos o erro novamente.

240
00:09:28,500 --> 00:09:30,390
‫Vamos registrar algo no console, como

241
00:09:30,390 --> 00:09:32,140
‫uma imagem aleatória de um cachorro

242
00:09:32,140 --> 00:09:33,733
‫salva em um arquivo.

243
00:09:35,930 --> 00:09:38,010
‫Salve-o, ele será executado

244
00:09:38,860 --> 00:09:41,950
‫novamente e aqui está nosso arquivo de imagem.

245
00:09:41,950 --> 00:09:44,030
‫E, na verdade, você pode ver que

246
00:09:44,030 --> 00:09:46,373
‫o código do VS exibe essa imagem aqui para nós.

247
00:09:48,060 --> 00:09:50,090
‫Salve-o novamente aqui, ele

248
00:09:50,090 --> 00:09:52,210
‫executará novamente nosso código e

249
00:09:52,210 --> 00:09:54,420
‫agora temos, na verdade, temos

250
00:09:54,420 --> 00:09:56,290
‫uma imagem diferente.

251
00:09:56,290 --> 00:09:57,230
‫Tudo bem.

252
00:09:57,230 --> 00:10:00,000
‫Portanto, nosso código está realmente funcionando.

253
00:10:00,000 --> 00:10:02,050
‫Vamos apenas adicionar um pequeno identificador de

254
00:10:02,050 --> 00:10:03,943
‫erro aqui, caso algo dê errado.

255
00:10:04,830 --> 00:10:08,593
‫Por exemplo, digamos que adicionamos algum nome estranho aqui.

256
00:10:10,050 --> 00:10:11,120
‫Execute novamente.

257
00:10:11,120 --> 00:10:13,860
‫E agora não será possível encontrar uma imagem

258
00:10:13,860 --> 00:10:14,700
‫para isso.

259
00:10:14,700 --> 00:10:17,683
‫E isso realmente resultará em um erro aqui.

260
00:10:18,620 --> 00:10:19,620
‫Portanto, devemos sempre

261
00:10:19,620 --> 00:10:22,300
‫fazer esse tipo de tratamento de erros no início

262
00:10:22,300 --> 00:10:23,290
‫e dizer

263
00:10:23,290 --> 00:10:24,943
‫isso se houver um erro,

264
00:10:27,060 --> 00:10:29,010
‫e podemos apenas registrar o erro. mensagem.

265
00:10:30,247 --> 00:10:31,830
‫E, na verdade, também devemos

266
00:10:31,830 --> 00:10:34,670
‫dizer que queremos retornar imediatamente desta função se houver um erro.

267
00:10:34,670 --> 00:10:37,330
‫Portanto, ele retornará e registrará no

268
00:10:37,330 --> 00:10:39,450
‫console esse erro.

269
00:10:39,450 --> 00:10:41,550
‫E nada mais acontecerá então.

270
00:10:41,550 --> 00:10:43,840
‫OK.

271
00:10:43,840 --> 00:10:45,140
‫É o que diz novamente, não foi encontrado aqui.

272
00:10:45,140 --> 00:10:46,920
‫E não salvou nada no

273
00:10:46,920 --> 00:10:49,770
‫arquivo porque já retornamos da função aqui em cima.

274
00:10:49,770 --> 00:10:52,870
‫OK?

275
00:10:52,870 --> 00:10:53,703
‫E o mesmo aqui embaixo,

276
00:10:53,703 --> 00:10:55,250
‫caso haja um erro ao salvar o arquivo no disco.

277
00:10:55,250 --> 00:10:59,513
‫Vamos voltar aqui e salvar

278
00:11:00,870 --> 00:11:02,173
‫novamente.

279
00:11:03,670 --> 00:11:04,780
‫E agora está funcionando bem novamente.

280
00:11:04,780 --> 00:11:07,923
‫OK.

281
00:11:08,860 --> 00:11:09,693
‫Portanto, este é

282
00:11:09,693 --> 00:11:10,526
‫apenas um pequeno

283
00:11:10,526 --> 00:11:13,100
‫exemplo para mostrar como é fácil terminar com retornos de

284
00:11:13,100 --> 00:11:15,770
‫chamada dentro de retornos de chamada dentro de retornos de chamada.

285
00:11:15,770 --> 00:11:17,100
‫E isso é claro porque,

286
00:11:17,100 --> 00:11:18,390
‫já sabemos que no

287
00:11:18,390 --> 00:11:20,400
‫Note JS, devemos sempre usar código assíncrono, certo?

288
00:11:20,400 --> 00:11:23,160
‫Acabamos usando call backs dentro de call

289
00:11:23,160 --> 00:11:25,870
‫backs dentro de call backs.

290
00:11:25,870 --> 00:11:27,090
‫E às vezes

291
00:11:27,090 --> 00:11:30,170
‫pode ser ainda mais profundo do que o que temos aqui.

292
00:11:30,170 --> 00:11:31,003
‫Você poderia, claro,

293
00:11:31,003 --> 00:11:33,010
‫ter cerca de 10 níveis dentro um do outro.

294
00:11:33,010 --> 00:11:34,600
‫Todos esses retornos de chamada

295
00:11:34,600 --> 00:11:36,230
‫fazem nosso código parecer um pouco confuso.

296
00:11:36,230 --> 00:11:38,920
‫Torna-se difícil de entender e também, em

297
00:11:38,920 --> 00:11:40,760
‫geral, difícil de manter.

298
00:11:40,760 --> 00:11:43,680
‫Novamente, talvez não neste nível com apenas três retornos de chamada

299
00:11:43,680 --> 00:11:45,050
‫dentro um do outro.

300
00:11:45,050 --> 00:11:48,200
‫Mas se tivéssemos um aninhamento ainda mais profundo,

301
00:11:48,200 --> 00:11:50,300
‫poderia rapidamente se tornar

302
00:11:50,300 --> 00:11:53,080
‫um pesadelo manter um código como este.

303
00:11:53,080 --> 00:11:54,920
‫E é por isso que esse padrão

304
00:11:54,920 --> 00:11:56,840
‫foi chamado de "chame de volta o inferno".

305
00:11:56,840 --> 00:11:58,200
‫É fácil

306
00:11:58,200 --> 00:12:01,450
‫identificar essa forma triangular em nosso código.

307
00:12:01,450 --> 00:12:02,283
‫É o que temos aqui.

308
00:12:02,283 --> 00:12:04,050
‫Como esse tipo de forma triangular.

309
00:12:04,050 --> 00:12:07,170
‫Sempre que você vê isso, é um sinal

310
00:12:07,170 --> 00:12:08,620
‫de que

311
00:12:08,620 --> 00:12:10,100
‫basicamente está no inferno.

312
00:12:10,100 --> 00:12:11,970
‫OK?

313
00:12:11,970 --> 00:12:12,803
‫E talvez

314
00:12:12,803 --> 00:12:15,160
‫você veja ou ouça esse termo quando fizer alguma

315
00:12:15,160 --> 00:12:17,100
‫pesquisa no Note JS ou algo assim.

316
00:12:17,100 --> 00:12:19,000
‫Mas agora, esta é realmente a única

317
00:12:19,000 --> 00:12:21,200
‫maneira que conhecemos de como escrever código assíncrono

318
00:12:21,200 --> 00:12:22,140
‫neste ponto.

319
00:12:22,140 --> 00:12:25,350
‫Mas vamos guardar isso no resto desta

320
00:12:25,350 --> 00:12:26,890
‫pequena seção.

321
00:12:26,890 --> 00:12:29,120
‫Então, vamos aprender como usar

322
00:12:29,120 --> 00:12:30,810
‫algo chamado Promises.

323
00:12:30,810 --> 00:12:32,550
‫E isso, no final, resolverá

324
00:12:32,550 --> 00:12:33,820
‫nosso problema e

325
00:12:33,820 --> 00:12:37,080
‫tornará nosso código mais fácil de ler e manter.

326
00:12:37,080 --> 00:12:38,570
‫Então, vamos fazer isso no resto da seção.

