setInterval ou timer perso
Salut, je me posais la question :
vaut-il mieux se faire un timer perso avec performance.now() et requestAnimationFrame() plutôt que setInterval ?
Je pencherais pour le timer perso avec la fonctionnalité de requestAnimationFrame() mais je ne sais pas comment setInterval est construit...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
class Timer {
constructor(callback, interval) {
let ti = performance.now();
let tf = 0,
dt = 0,
tick;
let _enabled = true;
function functimer() {
tf = performance.now();
dt = tf - ti;
if (dt >=interval) {
callback(dt);
ti=tf;
}
_enabled ? tick = window.requestAnimationFrame(functimer) : window.cancelAnimationFrame(tick);
}
Object.defineProperty(this, "enabled", {
get: function () {
return _enabled;
},
set: function (value) {
_enabled = value;
}
});
functimer();
}
}
/*let start=performance.now(),
dt=0,
end=0;*/
const Ecoute = function (dt) {
//end=performance.now();
//dt=end-start;
console.log(dt);
//start=end;
}
//setInterval(Ecoute, 10);
const timer = new Timer(Ecoute, 10);
</script>
</body>
</html> |