Timer.js appeler une fonction à interval régulier

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>

Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour30/03/2010
VisualisationVu 2030 fois
PublicInternaute zz
CategorieWeb - Javascript - Objets
Auteur de l'article
fobec fobec
connecté le 28/07/2016
41 ans - France Nord-Est
44 articles dans la section
Contacter l'auteur