15 dicembre 2021

Pianificazione: setTimeout e setInterval

Potremmo decidere di non eseguire subito una funzione, ma dopo un certo lasso di tempo. Questo è detto “pianificare una chiamata” (“scheduling a call”).

Ci sono due metodi per farlo:

  • setTimeout permette di eseguire una volta la funzione dopo l’intervallo prescelto.
  • setInterval permette di eseguire regolarmente la funzione lasciando scorrere l’intervallo di tempo prescelto tra una chiamata e l’altra.

Questi metodi non fanno parte delle specifiche di JavaScript. Ma la maggior parte degli ambienti hanno un pianificatore interno e forniscono questi metodi. In particolare, sono supportati in tutti i browser e in Node.js.

setTimeout

La sintassi:

let timerId = setTimeout(func|codice, [ritardo], [arg1], [arg2], ...)

Parametri:

func|codice
Funzione o stringa (string) di codice da eseguire. Di solito è una funzione. Per ragioni storiche, si può passare una stringa (string) di codice, ma è sconsigliato.
ritardo
Il ritardo in millisecondi (1000 ms = 1 secondo) prima dell’esecuzione, di base 0.
arg1, arg2
Gli argomenti della funzione (non supportati in IE9-)

Per esempio, questo codice esegue saluta() dopo un secondo:

function saluta() {
  alert('Ciao');
}

setTimeout(saluta, 1000);

Con gli argomenti:

function saluta(frase, chi) {
  alert( frase + ', ' + chi );
}

setTimeout(saluta, 1000, "Ciao", "Giovanni"); // Ciao, Giovanni

Se il primo argomento è una stringa (string), JavaScript crea una funzione dallo stesso.