~/questoes/programacao
Promises e Async/Await são duas formas de trabalhar com código assíncrono em JavaScript. A principal diferença está na sintaxe: Async/Await oferece uma forma mais legível e similar ao código síncrono tradicional, enquanto Promises usam callbacks e encadeamento com .then().
Async/Await permite escrever código assíncrono com sintaxe parecida com código síncrono, o que torna o código mais fácil de ler e entender. Isso não significa que o código seja bloqueante—ele continua sendo não-bloqueante, apenas com uma sintaxe mais limpa.
Essa é a diferença central entre as duas abordagens. Com Async/Await, você escreve 'await' como se esperasse por um resultado síncrono, mas sem bloquear a execução. Isso torna o código muito mais legível que Promises aninhadas com múltiplos .then().
Promises não são obsoletas. Async/Await na verdade usa Promises por baixo das capas. Todo código Async/Await é compilado para Promises, então ambas continuam relevantes e úteis em código moderno.
Ambos são não-bloqueantes. A confusão vem do fato de Async/Await parecer código síncrono, mas isso é apenas sintaxe. Internamente, ambas funcionam de forma assíncrona sem congelar a aplicação.
Async/Await não é inferior em performance. Na verdade, as duas abordagens têm performance similar porque Async/Await usa Promises internamente. A escolha deve ser baseada em legibilidade, não em performance.