setTimeout ejecuta código una sola vez tras un retardo.
setInterval lo ejecuta repetidamente cada cierto tiempo, hasta que lo detengas.
Un contador que incrementa cada segundo es el ejemplo más claro de setInterval:
Cada segundo, cuenta sube uno y el número en pantalla se actualiza.
clearIntervalSin control, setInterval corre para siempre mientras la pestaña esté abierta.
Igual que setTimeout, devuelve un id que usas para detenerlo:
Si el usuario pulsa "Iniciar" varias veces sin detener el anterior, se acumulan intervalos y el contador se acelera. La solución es limpiar el intervalo previo antes de crear uno nuevo:
setTimeout vs setIntervalsetTimeout | setInterval | |
|---|---|---|
| Ejecuciones | Una sola vez | Repetidamente |
| Se detiene con | clearTimeout | clearInterval |
| Uso típico | Retardo puntual | Acción periódica |
setIntervalclick de #btn-iniciarsetInterval que incremente un número cada segundo y lo muestre en #contadorsetInterval en una variableclick de #btn-detenerclearInterval con ese id para detener el contadorControlar el tiempo es controlar el ritmo de la interfaz.