Een klok die elke seconde tikt, is in feite een animatie, dus je zou kunnen profiteren van recursieve requestAnimationFrame
( met fallback to setTimeout
).
var previousTime = 0;
function update(time) {
if (time - previousTime >= 1000) {
redrawClock(time);
previousTime = time;
}
requestAnimationFrame(update);
}
Met setInterval
moet u een Date
-object maken voor elke iteratie, omdat de eigen vertraging van setInterval
langer kan duren dan de formele waarde. Zie het schitterende artikel van John Resig over timers in JavaScript .
requestAnimationFrame
on the contrary is:
- Efficiënter, geoptimaliseerd voor de taak.
- Geeft een nauwkeurig tijdstempel voor het terugbellen.