Nas aulas, pelo menos até agora, é utilizada a abordagem do .then() para pegar um valor futuro e me surgiu uma dúvida.
Qual é a diferença entre usarmos um .then() e usarmos um await com uma função assíncrona?
Nas aulas, pelo menos até agora, é utilizada a abordagem do .then() para pegar um valor futuro e me surgiu uma dúvida.
Qual é a diferença entre usarmos um .then() e usarmos um await com uma função assíncrona?
Ótima duvida Thiago!
Vamos lá:
then()o then()
vai executar uma função logo depois que sua tarefa terminar
async awaitimagina que você está esperando um download baixar, e quando ele terminar o arquivo ja vai abrir direto!
o async
vai dizer que sua tarefa é assíncrona e precisa de mais tempo para terminar
imagina que o download demora um tempo então enquanto ele está sendo feito você pode fazer outras coisas..
o await
vai dizer que você deve esperar a tarefa ser concluida para continuar
imagina uma atualização do windows que você nao pode usar o pc até que o download seja concluido.
Então quando eu devo usar then()
no lugar de async await
?
Primeiramente que o then()
não é uma boa prática para seu projeto, ele quebra bastante a legibilidade do código e também quebra a linearidade das tarefas no processador do celular, então o ideal é usa-lo raramente. Já o async/await
é mais natural para o processador e mais facil de outros devs entenderem a lógica do seu código.
Uai, então porque vocês ensinam o then()?
É porque inicialmente ele é muuito simples de entender, então para introduzir a dinamica de funções sequenciais ele é ideal didaticamente.
Então a dica que eu te dou é: Se dá pra trocar o then() por um async/await faça, você estará sempre ganhando.
Mais pra frente as coisas vão ficar mais complexas com Estados, que é quando o async/await
se sobresai em relação ao then()