ANÚNCIO

~/questoes/programacao

O que diferencia uma Promise de Async/Await em termos de sintaxe?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência JavaScript – DOM, Async/Await, CallStack e Event Loop
Para fixar

Promises vs Async/Await: Diferenças de Sintaxe

Conceito central

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().

Por que essa resposta faz sentido

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.

Armadilhas comuns

  • Achar que Async/Await bloqueia a execução porque parece código síncrono. Na verdade, é apenas uma sintaxe mais clara para trabalhar com Promises.
  • Pensar que Promises são obsoletas. Elas continuam sendo fundamentais e são a base sobre a qual Async/Await funciona.
  • Acreditar que toda operação assíncrona deve usar Async/Await. Às vezes, Promises com .then() são simples e legíveis o suficiente para o caso.

Entenda as alternativas

A

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().

B

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.

C

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.

D

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.

Dica prática: Quando você escrever uma função assíncrona, lembre-se: adicione 'async' antes da função e 'await' antes de cada operação assíncrona que você quer 'esperar'. Isso torna seu código parecido com síncrono, facilitando a leitura e a manutenção.

Revise pensando: Se Async/Await faz o código parecer síncrono, por que ainda é considerado não-bloqueante?