Hogyan működik a setTimeout függvény JavaScriptben?
sobes.tech MI
Válasz az MI-től
A setTimeout egy függvény vagy kódrészlet végrehajtását tervezi a megadott millimásodperc után.
Amikor a setTimeout-ot meghívják, a böngésző (vagy a Node.js futtatókörnyezet) létrehoz egy időzítőt. A setTimeout-nak átadott függvény a megadott késleltetési idő elteltével kerül a callback sorba (task queue).
A JavaScript egyszálú. A fő végrehajtó szál (main thread) szekvenciálisan hajtja végre a kódot. Amikor a fő szál befejezi a jelenlegi feladatokat, ellenőrzi a callback sort. Ha vannak benne függvények (például, amelyeket a setTimeout késleltetett), és a fő szál szabad, kiválasztja és végrehajtja az elsőt.
Ez azt jelenti, hogy a setTimeout(fn, 0) nem garantálja az fn azonnali végrehajtását. A lehető leggyorsabban végrehajtódik, de csak a jelenlegi kód végrehajtása után.
Szintaxis:
setTimeout(function, milliseconds, param1, param2, ...);
function: A végrehajtandó függvény.milliseconds: A millimásodpercek száma a függvény végrehajtása előtt. Ha kihagyják, alapértelmezett értéke 0.param1, param2, ...: Opcionális argumentumok, amelyeket a függvénynek átadnak a híváskor.
Példa:
// "Szia!" kiírása 2 másodperc múlva
setTimeout(function() {
console.log("Szia!");
}, 2000);
// Argumentumok átadása
function mutatUzenet(nev) {
console.log("Szia, " + nev + "!");
}
setTimeout(mutatUzenet, 1000, "Világ"); // 1 másodperc múlva kiírja: "Szia, Világ!"
A setTimeout visszaad egy számos ID-t, amit a clearTimeout segítségével lehet a tervezett végrehajtás megszakítására használni.
A clearTimeout használatának példája:
let timerId = setTimeout(function() {
console.log("Ez a sor nem fog megjelenni");
}, 3000);
console.log("Időzítő indítva...");
// Időzítő törlése
clearTimeout(timerId);
console.log("Időzítő törölve.");
Fontos pontok:
- A késleltetés nem garantált pontosan, különösen nagy terhelés esetén a fő szálon. A megadott idő a minimális késleltetés, mielőtt a függvény a callback sorba kerül.
- Node.js-ben a timer-eket az eseményhurkok (event loop) kezelik, hasonlóan a böngészőhöz.