ANÚNCIO

~/questoes/programacao

Qual é a diferença fundamental entre código síncrono e assíncrono em JavaScript?

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

Síncrono vs Assíncrono em JavaScript

Conceito central

Código síncrono executa linha por linha, aguardando cada operação terminar antes de prosseguir. Código assíncrono permite que operações longas aconteçam em background, liberando a execução para outras tarefas sem travar a interface.

Por que essa resposta faz sentido

Código síncrono bloqueia a execução até completar porque a próxima linha só roda depois que a anterior termina. Assíncrono não-bloqueia porque permite que operações demoradas rodem em segundo plano enquanto o resto do código continua executando, mantendo a interface responsiva.

Armadilhas comuns

  • Confundir assíncrono com paralelismo real de processador. JavaScript roda em uma única thread, mas o Event Loop cria a ilusão de paralelismo ao gerenciar várias operações.
  • Achar que código assíncrono é sempre melhor. Nem tudo precisa ser assíncrono. Para operações rápidas, síncrono é mais simples e direto.
  • Pensar que Promises e Async/Await tornam o código paralelo. Elas apenas mudam como você organiza o código assíncrono, mantendo a execução em uma única thread.

Entenda as alternativas

A

A diferença entre síncrono e assíncrono não tem relação com o escopo das variáveis (globais ou locais). Ambos funcionam com qualquer tipo de variável. O que importa é quando e como o código é executado.

B

É exatamente o oposto. Código síncrono executa sequencialmente, linha por linha. Assíncrono é que permite paralelismo aparente, deixando operações rodarem enquanto outras coisas acontecem.

C

Assíncrono não é sempre mais rápido. Depende do contexto. Para operações simples, síncrono é mais direto e rápido. Assíncrono brilha em requisições de API, leitura de arquivos e tarefas demoradas onde você não quer travar a interface.

D

Esta é a diferença fundamental. Síncrono bloqueia: se uma operação leva 5 segundos, tudo fica congelado por 5 segundos. Assíncrono não-bloqueia: a operação roda em background e o código continua, permitindo interação com a página.

Dica prática: Na prática, use síncrono para cálculos rápidos e operações locais. Use assíncrono (Async/Await) quando fizer requisições HTTP, ler arquivos ou qualquer operação que dependa de recursos externos. Assim sua página não trava enquanto aguarda a resposta.

Revise pensando: Se você faz uma requisição de API com Async/Await, o navegador consegue processar cliques do usuário enquanto aguarda a resposta? Por quê?