JavaScript vremenski događaji: setTimeout i setInterval

Programeri koriste vremenske događaje za odgodu izvršenja određenog koda ili za ponavljanje koda u određenom intervalu.

Postoje dvije izvorne funkcije u JavaScript knjižnici koje se koriste za izvršavanje ovih zadataka: setTimeout()i setInterval().

setTimeout

setTimeout() koristi se za odgodu izvršenja proslijeđene funkcije za određeno vrijeme.

Dva su parametra kojima prosljeđujete setTimeout(): funkciju koju želite pozvati i količinu vremena u milisekundama da se odgodi izvršavanje funkcije.

Imajte na umu da u 1 sekundi postoji 1000 milisekundi (ms), pa je 5000 ms jednako 5 sekundi.

setTimeout() izvršit će funkciju iz prvog argumenta jednom nakon što protekne određeno vrijeme.

Primjer:

let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); }

Kada se delayTimerfunkcija pozove, pokrenut će se setTimeout. Nakon 3 sekunde (3000 ms) provest će se, delayedFunctionšto će poslati upozorenje.

setInterval

Koristite setInterval()za određivanje funkcije za ponavljanje s vremenskim kašnjenjem između izvršavanja.

Ponovno se prosljeđuju dva parametra setInterval(): funkcija koju želite pozvati i količina vremena u milisekundama za odgodu svakog poziva funkcije.

setInterval() nastavit će se izvršavati dok se ne očisti.

Primjer:

let intervalID; function repeatEverySecond() { intervalID = setInterval(sendMessage, 1000); } function sendMessage() { console.log(“One second elapsed.”); }

Kad vaš kod pozove funkciju repeatEverySecond, pokrenut će se setInterval. setIntervalpokrenut će funkciju sendMessagesvake sekunde (1000 ms).

clearTimeout i clearInterval

Postoje i odgovarajuće izvorne funkcije za zaustavljanje vremenskih događaja: clearTimeout()i clearInterval().

Možda ste primijetili da je svaka gornja funkcija odbrojavanja spremljena u varijablu. Kada se funkcija setTimeoutili setIntervalpokrene, dodjeljuje joj se broj koji se sprema u ovu varijablu. Imajte na umu da JavaScript sve to radi u pozadini.

Ovaj generirani broj jedinstven je za svaki primjerak odbrojavanja. Ovaj dodijeljeni broj je i način na koji se odbrojavači prepoznaju kada ih želite zaustaviti. Iz tog razloga svoj timer uvijek morate postaviti na varijablu.

Radi jasnoće koda, uvijek se trebate podudarati clearTimeout()s setTimeout()i clearInterval()s setInterval().

Da biste zaustavili odbrojavanje, nazovite odgovarajuću funkciju brisanja i dodajte mu varijablu ID-a odbrojavanja koja se podudara s odbrojavanjem koje želite zaustaviti. Sintaksa za clearInterval()i clearTimeout()su iste.

Primjer:

let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); } function clearAlert() { clearTimeout(timeoutID); }