Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida na tarefa de explicação

Bom dia e feliz ano novo :)

Pessoal, fiquei com uma dúvida sobre o último trecho dessa tarefa de explicação. (https://cursos.alura.com.br/course/javascript-entendendo-promises-async-await/task/164637)

Temos o seguinte código:

console.log("Início");

setTimeout(() => {
  console.log("Timeout 1");
}, 3000);

setTimeout(() => {
  console.log("Timeout 2");
}, 2000);

console.log("Fim");

E essa explicação:

Neste exemplo, mesmo o "Timeout 1" tendo um tempo de espera menor, "Timeout 2" é impresso primeiro porque sua espera é menor. Isso mostra como o Event Loop gerencia a execução assíncrona, garantindo que o código seja executado na ordem correta, baseado no tempo de espera.

Na verdade, o timeout1 tem tempo de espera maior e por isso ele teria seu log publicado depois, não?

A ordem dos logs impressos seria Inicio, Fim, Timeout 2 e Timeout1?

Obrigado!

2 respostas
solução!

Oi Johan,

Você está correto na sua análise! 👍

Houve um equívoco na explicação da tarefa.

O setTimeout com 3000ms (Timeout 1) tem um tempo de espera maior do que o setTimeout com 2000ms (Timeout 2).

Portanto, o "Timeout 2" será impresso antes do "Timeout 1".

A ordem correta dos logs impressos será:

  1. "Início"
  2. "Fim"
  3. "Timeout 2"
  4. "Timeout 1"

Isso acontece porque o JavaScript executa o código de forma síncrona, e as funções setTimeout são enviadas para a Task Queue (fila de tarefas) e o Event Loop verifica a fila e envia para a Call Stack (pilha de execução) quando o tempo de espera termina. 💪

Para saber mais: Entendendo o Event Loop do JavaScript. Este artigo da MDN explica detalhadamente como o Event Loop funciona no JavaScript.

Continue praticando e explorando o mundo da programação! 💻

Feliz Ano Novo!

Entendi, Luis! Então era isso mesmo!

Obrigado pela explicação e pelo artigo adicional! ;)