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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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()