Hoe werkt de functie setTimeout in JavaScript?
sobes.tech AI
Antwoord van AI
setTimeout plant een functie of codefragment uit te voeren na het opgegeven aantal milliseconden.
Bij het aanroepen van setTimeout creëert de browser (of de Node.js runtime-omgeving) een timer. De functie die aan setTimeout wordt doorgegeven, wordt na het verstrijken van de opgegeven vertragingstijd in de callback-queue (task queue) geplaatst.
JavaScript is single-threaded. De hoofdthread voert de code sequentieel uit. Wanneer de hoofdthread de huidige taken heeft voltooid, controleert hij de callback-queue. Als er functies in de queue staan (bijvoorbeeld die uitgesteld met setTimeout) en de hoofdthread vrij is, wordt de eerste functie uit de queue gehaald en uitgevoerd.
Dit betekent dat setTimeout(fn, 0) niet garandeert dat fn onmiddellijk wordt uitgevoerd. Het wordt zo snel mogelijk uitgevoerd, maar pas nadat de huidige code in de hoofdthread is voltooid.
Syntax:
setTimeout(function, milliseconds, param1, param2, ...);
function: De functie die moet worden uitgevoerd.milliseconds: Het aantal milliseconden voordat de functie wordt uitgevoerd. Als het wordt weggelaten, is de standaard 0.param1, param2, ...: Optionele argumenten die aan de functie worden doorgegeven bij het aanroepen.
Voorbeeld:
// Toont "Hallo!" na 2 seconden
setTimeout(function() {
console.log("Hallo!");
}, 2000);
// Argumenten doorgeven
function toonBericht(naam) {
console.log("Hallo, " + naam + "!");
}
setTimeout(toonBericht, 1000, "Wereld"); // Toont "Hallo, Wereld!" na 1 seconde
setTimeout geeft een numerieke timer-ID terug, die kan worden gebruikt om de geplande uitvoering te annuleren met clearTimeout.
Voorbeeld van gebruik van clearTimeout:
let timerId = setTimeout(function() {
console.log("Deze regel wordt niet weergegeven");
}, 3000);
console.log("Timer gestart...");
// Timer annuleren
clearTimeout(timerId);
console.log("Timer geannuleerd.");
Belangrijke punten:
- De vertraging wordt niet exact gegarandeerd, vooral bij hoge belasting van de hoofdthread. De opgegeven tijd is de minimale vertraging voordat de functie in de callback-queue wordt geplaatst.
- In Node.js worden timers beheerd door de event loop, vergelijkbaar met de browser.