Oi Bruno, tudo bem?
Uma função assíncrona, ou Async function, é uma função que tem a palavra-chave async
antes de sua declaração. O papel dela é sempre retornar uma promessa. Se o código dentro da função assíncrona retorna um valor direto, o JavaScript automaticamente o envolve em uma promessa resolvida.
Agora, o await
é utilizado apenas dentro de uma função assíncrona e faz o JavaScript "pausar" e esperar pela resolução ou rejeição da Promessa. Ele só pode ser usado dentro de uma função async. Ou seja, você não pode usar await
no código global do seu script.
Vamos a um exemplo prático para esclarecer. Imagine que você tem uma função que busca dados de uma API:
async function buscarDados() {
const resposta = await fetch('https://api.exemplo.com/dados');
const dados = await resposta.json();
return dados;
}
Nesse exemplo, fetch
é uma função que retorna uma promessa. O await
faz com que o JavaScript espere até que a promessa seja resolvida (ou rejeitada). Assim que a promessa do fetch
for resolvida, o código continua a execução, atribuindo o resultado à variável resposta
. O mesmo acontece com resposta.json()
, que também retorna uma promessa.
Sobre quando usar, você vai querer usar async/await quando estiver lidando com operações assíncronas, como buscar dados de uma API, ler um arquivo do disco, etc. É uma maneira mais elegante e fácil de lidar com operações assíncronas, em comparação com callbacks e Promises.
Espero ter ajudado.
Um abraço e bons estudos.