La funzione setInterval() in JavaScript
La funzione setInterval() in JavaScript è utilizzata per ripetere l'esecuzione di una funzione o di un blocco di codice a intervalli di tempo regolari definiti.
let intervalID = setInterval(function[, delay, arg1, arg2, ...]);
Essenzialmente la funzione prende due parametri:
- function è la funzione che voglio eseguire dopo ogni intervallo di tempo. Può essere anche una funzione anonima o una funzione freccia.
- delay è l'intervallo di tempo in millisecondi tra le esecuzioni successive della funzione. Il valore minimo è in genere 4 ms.
- arg1, arg2, ... sono opzionali e rappresentano i parametri aggiuntivi da passare alla funzione.
Finché non viene interrotta, setInterval() ripete l'esecuzione della funzione o del blocco di codice associato.
A cosa serve? La funzione setInterval() è molto utile per eseguire operazioni ripetitive, come aggiornare informazioni in tempo reale, creare animazioni, o semplicemente eseguire un controllo periodico in background.
Ad esempio, questo script chiama la funzione saluta()
- function saluta() {
- document.write('Ciao mondo!');
- }
- const intervallo = setInterval(saluta, 2000);
La funzione saluta() viene eseguita ogni ogni 2000 millisecondi (2 secondi).
Ciao mondo!
Ciao mondo!
Ciao mondo!
Ciao mondo!
Ciao mondo!
Poiché l'esercuzione prosegue all'infinito, è molto utile indicare una condizione di terminazione tramite la funzione clearInterval() passando l'identificatore dell'intervallo.
Ad esempio, questo script fissa un massimo di 5 ripetizioni.
- function saluta() {
- document.write('Ciao mondo!');
- }
- // Imposto un contatore per le ripetizioni
- let conteggio = 0;
- const numeroMassimoRipetizioni = 5;
- // Definisco la funzione che andrà a incrementare il conteggio
- // e fermerà l'intervallo quando raggiunge il numero massimo di ripetizioni
- const intervallo = setInterval(() => {
- saluta();
- conteggio += 1;
- if (conteggio >= numeroMassimoRipetizioni) {
- clearInterval(intervallo);
- }
- }, 2000);
In alternativa, posso fissare un tempo massimo tramite setTimeout() oltrepassato il quale l'esecuzione di setInterval() viene interrotta
- function saluta() {
- document.write('Ciao mondo!');
- }
- // Imposta il tempo dopo il quale desideri che l'intervallo si fermi (es. 10 secondi)
- const tempoDiFermata = 10000;
- const intervallo = setInterval(saluta, 2000);
- // Ferma l'esecuzione dopo il tempo di fermata prestabilito
- setTimeout(() => {
- clearInterval(intervallo);
- console.log('Intervallo fermato.');
- }, tempoDiFermata);
In quest'ultimo codice l'esecuzione viene fermata dopo 10000 millisecondi (10 secondi).
E così via.