Output ogni secondo
importanza: 5
Scrivi una funzione stampaNumeri(da, a)
che produca un numero ogni secondo, partendo da da
e finendo con a
.
Crea due varianti della soluzione.
- Usando
setInterval
. - Usando
setTimeout
ricorsivo.
Usando setInterval
:
function stampaNumeri(da, a) {
let attuale = da;
let timerId = setInterval(function() {
alert(attuale);
if (attuale == a) {
clearInterval(timerId);
}
attuale++;
}, 1000);
}
// utilizzo:
stampaNumeri(5, 10);
Usando setTimeout
ricorsivo:
function stampaNumeri(da, a) {
let attuale = da;
setTimeout(function vai() {
alert(attuale);
if (attuale < a) {
setTimeout(vai, 1000);
}
attuale++;
}, 1000);
}
// utilizzo:
stampaNumeri(5, 10);
Nota che in entrambe le soluzioni c’è un ritardo iniziale prima del primo output. La funzione viene eseguita la prima volta dopo 1000ms
.
Se vogliamo che la funzione venga eseguita subito, possiamo aggiugere una chiamata addizionale su di una linea separata, come questa:
function stampaNumeri(da, a) {
let attuale = da;
function vai() {
alert(attule);
if (attuale == a) {
clearInterval(timerId);
}
attuale++;
}
vai();
let timerId = setInterval(vai, 1000);
}
stampaNumeri(5, 10);