2009-07-07 7 views

Répondre

2

Vous n'appelez pas correctement la fonction périodique, voir le MooTools documentation.

Dans votre exemple, vous exécutez la fonction une fois et essayez d'utiliser la fonction périodique sur sa valeur de retour (d'où votre premier message est transmis directement, et non après les 1000ms retard):

var Main = new Class({ 
    Implements: [Options], 

    options: { 
    releaseDate: '1 January, 2010' 
    }, 

    initialize: function(options){ 
    this.setOptions(options); 
    this.startClock(); 
    }, 

    startClock: function(){ 
    var current = $time(); 
    var future = new Date(this.options.releaseDate); 
    future = future.getTime(); 

    this.clock = this.iterateClock(current, future).periodical(1000, this); 
    }, 

    iterateClock: function(current, future){ 
    var difference = future - current; 

    var days = Math.floor((difference/(60 * 60 * 24))/1000); 
    console.log(days); 
    } 
}); 

Qu'est-ce que vous voulez est d'appeler périodiquement la fonction iterateClock avec une période spécifiée, une liaison et des arguments (sous la forme d'un tableau):

this.clock = this.iterateClock.periodical(1000, this, [current, future]); 
+0

il a obtenu la même réponse dans la liste de diffusion de mootools. Une autre façon de résoudre ceci est d'utiliser la fonction anon comme fermeture et d'y appliquer le périodique comme dans son code original. –

Questions connexes