Notamment en Web2.0, certaines fonctions JavaScript sont appelées à intervalle régulier par exemple pour mettre à jour des données.
Afin de simplifier cette opération, créons un objet JavaScript ayant pour but de lancer régulièrement un évènement
.
Objet Javascript: timer.js/**
* timer.js: between time intervals repeat a javascript function
* author: fobec 2010
*/
function Timer() {
var interval=100; //ms
var onTimerCallBack=null;
var tickCount=0; //time elapse
var enabled=false; //run timer
//set interval in ms
this.setInterval=function(_interval) {
interval=parseInt(_interval);
};
//start timer
this.start=function () {
enabled=true;
onTimerCallBack.call();
setTimeout(function() {
internalOnTimer.apply(this, arguments)
}, 1000);
};
//stop timer
this.stop=function() {
enabled=false;
};
//get time elapse since first start in ms
this.getTickCount=function() {
return tickCount;
};
//set function to call on each timeOut
this.setCallBack=function(_callBackfunction) {
onTimerCallBack=_callBackfunction;
}
//set internal time to 0
this.reset=function() {
tickCount=0;
}
/**
* private
*/
var internalOnTimer=function() {
tickCount+=interval;
onTimerCallBack.call();
if (enabled) {
setTimeout(function() {
internalOnTimer.apply(this, arguments)
},interval);
}
}
}
Exemple d'utilisation dans une page HTML<a href="#" onclick="javascript:timer.start()">lancer le timer</a>
<div id="TV"></div>
<a href="#" onclick="javascript:timer.stop()">arreter le timer</a>
<script language="javascript">
function onTimer() {
document.getElementById("TV").innerHTML=timer.getTickCount()+"ms";
}
timer=new Timer();
timer.setCallBack(onTimer);
timer.setInterval(200);
</script>