MBO-SD : De site voor software developer in het MBO
Timers in Javascript
Wat is een timer
Soms wil je een bepaalde actie na een aantal seconden uitvoeren. Dit omdat je bijvoorbeeld een quiz maakt
en de gebruiker 20 seconden de tijd wilt geven om een antwoord te kiezen. Of soms wil je een aantal
seconden wachten om te zien of je informatie van een andere webserver terug krijgt.
Er zijn ook websites die kijken of je nog wel actief bent, ben je 15 minuten inactief (bijvoorbeeld bij
de website van de belastingdienst als je ingelogd bent) dan wordt je automatisch uitgelogd.
Omdat voor elkaar te krijgen gebruiken we setTimeout
en setInterval
. Twee
JavaScript functies om dit voor elkaar te krijgen. Ze lijken op elkaar, maar hebben een verschillende
werking.
setTimeout
functie gebruik je om eenmalig een functie uit te voerensetInterval
functie gebruik je om na elke x-tijd een functie uit te herhalen
setTimeout
function sayHi() {
alert('Hello world!');
}
let timerId = setTimeout(sayHi, 1000);
Bovenstaande code zal na 1000 miliseconden (=1 seconden) de functie sayHi
uitvoeren.
Er zal dus na 1 seconden een alert-popup gegeven worden met de tekst Hello world!
.
In de variabele
timerId
wordt een unieke ID opgeslagen waarmee je de timer eventueel kan
annuleren mocht dit nodig zijn.
Functie met argumenten
Soms wil je ook informatie meegegeven aan de functie, je moet/ kan hiervoor de setTimeout
die argumenten meegeven, maar niet in de functie zelf, maar na de tijd van de timer.
function sayHi(userName, userAge) {
alert(`Hello ${userName}! You are ${userAge} years old`);
}
let nameOfTheUser = 'Jean Luc';
let ageOfTheUser = 56;
let timerId = setTimeout(sayHi, 750, nameOfTheUser, ageOfTheUser);
//Bovenstaande code voert de functie sayHi uit, na 750 milliseconden en
//de functie wordt aangeroepen met 2 argumenten, nameOfTheUser en ageOfTheUser
LET OP!
Je kan oneindig veel argumenten mee geven, elke nieuwe argument van je functie voeg je aan het einde
van de setTimeout
functie neer.
Functie aanroepen, niet uitvoeren
function sayHi() {
alert('Hello world!');
}
let timerId = setTimeout(sayHi(), 1000);
In bovenstaande code zal de alert meteen getoond worden. Dit komt door de twee ()
die je
toevoegd aan de functie. Zodoende voer je de functie meteen uit en zal deze niet pas na 1000 miliseconden
uitgevoerd worden.
Een timeout stoppen
Zoals je boven hebt kunnen lezen kan je een timeout ook annuleren, bijvoorbeeld als de gebruiker antwoord
gegeven heeft op je vraag of hij niet meer inactief is. Daarvoor gebruiken we de functie clearInterval
function sayHi() {
alert('Hello world!');
}
let timerId = setTimeout(sayHi, 1000);
clearInterval(timerId);
Bovenstaande code wordt niet meer uitgevoerd.
de setInterval functie
De setInterval
functie werkt exact hetzelfde als de setTimeout (zelfde syntax, oplossingen ed.)
Het enige verschil is dat de setTimeout
maar 1 keer uitgevoerd wordt na de opgegeven tijd en de
setInterval
zich elke keer herhaalt tot je de clearTimeout
functie aanroept.
const timesToRun = 5;
let timesRun = 0;
let timerId;
function showConsoleMessage() {
timesRun++;
console.log('De console functie is aangeroepen');
if (timesRun === timesToRun) {
clearInterval(timerId);
}
}
timerId = setInterval(showConsoleMessage, 500);
Bovenstaande code wordt 5 keer uitgevoerd daarna zal die niet meer uitgevoerd worden. Dit komt door de
if-statement die er in staat.
Jouw JavaScript
Op de MBO-SD Fiddle site kan je meer oefenen met deze stof.
Klik hier voor de MBO-SD Fiddle site