Ce face setTimeout / setInterval
setTimeout programează o funcție să ruleze o singură dată, după numărul de milisecunde dat (1000 ms = 1 secundă). setInterval o rulează iar și iar, la același interval.
Codul de după setTimeout nu așteaptă: continuă imediat, iar funcția programată rulează mai târziu. Ambele returnează un identificator, cu care oprești programarea prin clearTimeout sau clearInterval.
Parametri
| Parametru | Descriere |
|---|---|
functie |
Funcția de rulat. |
milisecunde |
Pauza în milisecunde. Implicit 0. |
Ce returnează
Un identificator al programării, folosit la anulare.
Exemple
Exemplul 1: Codul nu așteaptă
console.log("1. Început");
setTimeout(() => {
console.log("3. După 500 ms");
}, 500);
console.log("2. Sfârșit");
Rezultat
1. Început
2. Sfârșit
3. După 500 ms
Exemplul 2: Numărătoare inversă cu setInterval
let secunde = 3;
const cronometru = setInterval(() => {
console.log(secunde);
secunde--;
if (secunde === 0) {
clearInterval(cronometru);
console.log("Start!");
}
}, 200);
Rezultat
3
2
1
Start!
Exemplul 3: Anularea unei programări
const mesaj = setTimeout(() => console.log("Nu apare"), 1000);
clearTimeout(mesaj);
console.log("Programare anulată");
Rezultat
Programare anulată
Greșeli frecvente
- Scrii
setTimeout(functie(), 1000), cu paranteze. Funcția rulează imediat, iar ce returnează ea este programat. Dă funcția fără să o apelezi:setTimeout(functie, 1000). - Pornești un
setIntervalși nu îl oprești niciodată. Funcția rulează la nesfârșit, chiar și după ce nu mai ai nevoie de ea.
Comenzi înrudite
Promise / then: O promisiune reprezintă un rezultat care va veni mai târziu: o cerere la server, un fișier citit, o pauză.async / await: Scrie cod asincron care se citește ca un cod obișnuit, de sus în jos.