Vorremo rendere disponibile questo progetto open-source per persone in tutto il mondo.

Aiutaci a tradurre il contenuto di questo tutorial nella tua lingua!

torna alle lezioni

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.

  1. Usando setInterval.
  2. 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);