Uma coisa que é sabida é que o Javascript é síncrono.
Isto quer dizer que ele executa suas funções em paralelo, sem esperar terminar alguma função primeiro para depois executar uma outra.
Muitas das vezes, isso não nos causa nenhum impacto, mas em alguns casos, precisamos esperar o resultado de uma determinada função para que assim possamos seguir em diante do nosso código.
Para isso, precisaríamos então que essa nossa função se transforme em uma função assíncrona
. Mas como?
Vamos considerar um cenário onde precisamos calcular um determinado número, armazena em um array e depois exibimos ele.
Começamos criando nossa estrutura inicial:
1 | const aluno = []; |
Nessa função, o Javascript fará o console.log
antes mesmo de terminar o push
dentro da função calcStudent
.
Precisamos garantir então que o console.log deve esperar que a função de calcular foi terminada para assim exibir!
Para isso, usaremos o Promise
!
A primeira coisa que devemos fazer é transformar a função calcStudent
em async e informaremos que queremos que o Javascript espere a resolução dessa variável.
1 |
|
Dessa forma, esperamos a função se resolver para que possamos exibir o resultado!
Também poderíamos fazer como retorno da função, da seguinte maneira:
1 | // Colocamos o await no retorno |
Essa abordagem nos permite transformar funções síncrona em assíncrona, o que é, em alguns casos, muito útil!