setTimeout
e setInterval
parecem simples, mas escondem pegadinhas comuns que já derrubaram muito código por aí.
Hoje, você vai entender de vez quando usar cada um — e evitar os bugs invisíveis que eles podem causar.
🧠 Diferença básica
setTimeout(fn, delay);
// Executa APENAS UMA VEZ após o delay
setInterval(fn, delay);
// Executa INFINITAMENTE a cada delay
⛔ Problemas comuns
❌ Usar setInterval
sem controle
setInterval(() => {
console.log('Executando...');
}, 1000);
Se você esquecer do clearInterval()
, esse código nunca para. E se você chamar ele várias vezes? Vai ter múltiplas execuções simultâneas — e talvez nem perceba.
✅ Melhor com setTimeout
+ recursão
function loopControlado() {
console.log('Executando...');
setTimeout(loopControlado, 1000);
}
loopControlado();
Com isso, você controla melhor a execução e evita intervalos sobrepostos.
⚙️ Quando usar cada um
Caso de uso | Use |
---|---|
Executar uma vez após um tempo | setTimeout |
Criar uma animação leve |
setTimeout (recursivo) |
Intervalos constantes e previsíveis |
setInterval (com clearInterval ) |
Atualizar UI a cada segundo (temporariamente) |
setInterval + clearInterval
|
💡 Alternativa moderna
requestAnimationFrame(() => {
// executa antes do próximo repaint
});
Ótimo para animações mais suaves. Ele pausa quando a aba fica inativa, economizando performance.
💬 E você?
Já deixou um setInterval
rodando sem perceber?
Ou já viu o navegador travar por conta disso? 😅
Conta aqui nos comentários 👇
Top comments (0)