tempo é Relativo: Callbacks e Timers
O que vais aprender nesta aula:
- JavaScript Síncrono vs Assíncrono
- Executar código "daqui a pouco":
setTimeout - Executar código "repetidamente":
setInterval
🧠 Teoria (com Analogia e Contexto Real)
Por defeito, o JavaScript lê uma linha de cada vez. Mas se uma linha demorar muito (ex: carregar um vídeo), não queremos bloquear o site todo!
🍕 Analogia da Pizzaria
Síncrono (Bloqueante): O funcionário recebe o pedido, vai para a cozinha, faz a pizza, entrega, e SÓ DEPOIS atende o próximo cliente. (A fila pára!).
Assíncrono (Non-Blocking): O funcionário anota o pedido e diz "Eu chamo quando estiver pronta!". Enquanto a pizza coze, ele atende outras pessoas.
💻 Prática (Orientada e Progressiva)
Controlar o tempo é um superpoder no JS.
1. setTimeout (Alarme)
Executa UMA VEZ após X milissegundos.
console.log("1. Começou");
setTimeout(function() {
console.log("2. Passaram 3 segundos!");
}, 3000);
console.log("3. Fim (Isto aparece antes do 2!)");
2. setInterval (Metrónomo)
Executa REPETIDAMENTE a cada X milissegundos.
let contador = 0;
const intervalo = setInterval(() => {
contador++;
console.log("Contagem: " + contador);
if (contador === 5) {
clearInterval(intervalo); // Pára o relógio
console.log("Stop!");
}
}, 1000); // 1 segundo
🧪 Experiência: A Bomba Relógio
Clica em "Armar Bomba". Tens 5 segundos para clicar em "Desarmar" antes que rebente!