Ako funguje funkcia setTimeout v JavaScript?
sobes.tech AI
Odpoveď od AI
setTimeout naplánuje vykonanie funkcie alebo časti kódu po uplynutí zadaného počtu milisekúnd.
Pri volaní setTimeout vytvorí prehliadač (alebo prostredie Node.js) časovač. Funkcia odovzdaná do setTimeout sa po uplynutí zadaného času uloží do fronty callbackov (task queue).
JavaScript je jednovláknový. Hlavný vlákno vykonávania (main thread) vykonáva kód sekvenčne. Keď hlavné vlákno dokončí aktuálne úlohy, skontroluje frontu callbackov. Ak sú v nej funkcie (napríklad odložené pomocou setTimeout) a hlavné vlákno je voľné, vyberie a vykoná prvú.
To znamená, že setTimeout(fn, 0) nezaručuje okamžité vykonanie fn. Bude vykonané čo najskôr, ale až po dokončení aktuálneho kódu v hlavnom vlákne.
Syntax:
setTimeout(function, milliseconds, param1, param2, ...);
function: Funkcia, ktorú chcete vykonať.milliseconds: Počet milisekúnd pred vykonaním funkcie. Ak je vynechané, predvolene je 0.param1, param2, ...: Voliteľné argumenty, ktoré budú odovzdané funkcii pri jej volaní.
Príklad:
// Vypíše "Ahoj!" po 2 sekundách
setTimeout(function() {
console.log("Ahoj!");
}, 2000);
// Odovzdanie argumentov
function zobrazSpravu(meno) {
console.log("Ahoj, " + meno + "!");
}
setTimeout(zobrazSpravu, 1000, "Svet"); // Vypíše "Ahoj, Svet!" po 1 sekunde
setTimeout vracia číselný ID časovača, ktorý možno použiť na zrušenie naplánovaného vykonania pomocou clearTimeout.
Príklad použitia clearTimeout:
let timerId = setTimeout(function() {
console.log("Táto riadok sa nezobrazí");
}, 3000);
console.log("Časovač spustený...");
// Zrušiť časovač
clearTimeout(timerId);
console.log("Časovač zrušený.");
Dôležité body:
- Zpoždenie nie je presne garantované, najmä pri vysokom zaťažení hlavného vlákna. Uvedený čas je minimálne zpoždenie pred umiestnením funkcie do fronty callbackov.
- V Node.js sú časovače spravované cez udalosť (event loop), podobne ako v prehliadači.