Não. O core
de funções assíncronas é entender como funciona o await
. Considere o seguinte exemplo:
Um chefe de cozinha tem que preparar um frango ao molho dentro de 1 horas. Se ele fizer tudo em sequência, ou seja, primeiro o frango, depois o molho, logo em seguida em pratar e finalizar com acompanhamentos, demoraria demais. (isto seria uma operação síncrona, tudo feito uma por vez, não ao mesmo tempo).
Agora, qual é a solução para isso? Simples, temos que fazer tudo ao mesmo tempo intercalando (operação assícnrona concorrente). Então o chefe coloca o frango no forno, enquanto isso prepara o molho e coloca no fogo. Enquanto o frango e o molho esta no fogo, ele precisa separar os pratos e deixar em posição para colocar o frango.
O molho terminou primeiro que o frango, mas não podemos colocar o molho no prato e depois o frango, tem que ser o frango e depois o molho, e agora? Agora ele "ESPERA" (await
). Então, quando o frango estiver pronto, ele coloca no prato e logo em seguida, o molho que estava esperando é colocado por cima.
Consegue ver a analogia? Quando queremos que uma operação só seja concluída somente quando outra termine, queremos esperar, e é exatamente isso que o await
faz, deixa tudo abaixo dele esperando até que atividadade em processo termine, para poder começar outra.
E tudo aquilo que leva tempo para ser concluído, ou seja, não bloqueia o resto do programa abaixo dele, no caso, a função assíncrona não vai bloquear o resto do programa que é síncrono, é uma operação assíncrona.
Considere o seguinte código:
async function HandleMyFetch() {
const myFetch = await fetch('url')
// mesmo que demore 10 segundos, o resto do programa fora do escopo desta função
// continua sendo interpretado.
return myFetch;
// retorna uma Promise com o valor do retornado do Fetch. Se não fosse o "await", iria
// retorna "undefined" pois o retorno iria executar antes do "fetch" estar pronto, e
// não esperar.
}
Não sei se deu para entender. Mas não tenha vergonha em perguntar. Eu responderei todas as dúvidas que você tiver 😄