cara, primeiro muito obrigado pelo post. Me veio uma dúvida aqui. você disse que uma função assíncrona sem await é uma função síncrona:
`async function HandleMyAge(age) { return age; }
HandleMyAge(22) // Promise`
O exemplo acima, do seu texto, retorna mesmo uma promise, ou no caso faltou declarar dessa forma:
`async function HandleMyAge(age) { await _age = age return _age }
HandleMyAge(22) // Promise`
Valeu mesmo por compartilhar seu conhecimento por aqui!
Eu não sei se entendi bem a sua dúvida, mas irei explicar pelo o que eu acredito que seja.
Você mencionou sobre o fato de funções sem await
serem executadas de forma sincrona, e mostrou um exemplo meu que não tem await
, mas retorna uma promise.
Explicação: uma função assíncrona sempre vai embrulhar o retorno em uma promise
. É importante enfatizar o "embrulhar". Embrulhar em uma promise, não é uma operação assíncrona, e sim síncrona. Então com ou sem await
vai retornar uma promize pois o valor foi "embrulhado". Embrulhar é apenas pegar o valor de retorna e transformar aquele valor numa Promise.
A questão das funções sem await
se comportar como funções regulares (síncrona) é apenas na execução. Então sem await
, é como uma função regular, mas que embrulha numa Promise. O await
é para garantir que todo o resto do escopo abaixo de onde esta o 'await', deva esperar. Isso é controlado pelo o Event Loop, que gerencia operações assíncronas concorrentemente.
Não sei se era sua dúvida, mas estou sempre a disposição no que precisar.