1
resposta

Diferença entre um .then() e um async await

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?

1 resposta

Ótima duvida Thiago!

Vamos lá:

then()

o then() vai executar uma função logo depois que sua tarefa terminar

imagina que você está esperando um download baixar, e quando ele terminar o arquivo ja vai abrir direto!

async await

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()