2010-08-12 11 views
0

Si j'ai le code suivant:javascript: Comment puis-je vérifier les propriétés du minuteur?

var myfunc = function() { alert('wow'); }; 
var t=setTimeout(myfunc, 300); 

Est-ce que je peux faire avec l'identifiant stocké dans t pour vérifier la durée et le rappel de la minuterie? J'essaie de vérifier les propriétés de la minuterie directement, donc je n'ai pas à l'exécuter jusqu'à la fin de mes tests unitaires.

Répondre

1

Non, impossible à faire.

Qu'est-ce que vous pouvez faire à la place est de les suivre différemment, quelque chose comme ceci:

var timeouts = [{ 
    fn: myfunc, 
    timeout: 300 
}]; 

for(var i = 0; i < timeouts.length; i++){ 
    timeouts[i].id = window.setTimeout(timeouts[i].fn, timeouts[i].timeout); 
} 
0

Le retourné ID est interne au navigateur, de sorte que vous ne pouvez pas faire grand-chose avec elle. Mais puisque vous connaissez la durée et le rappel lorsque vous lancez le chronomètre, vous pouvez tout aussi bien envelopper le tout dans une classe Timer qui fait tout pour vous:

function Timer(callback, timeout) { 
    this.callback = callback; 
    this.timeout = timeout; 
    this.id = window.setTimeout(callback, timeout); 
} 

Timer.prototype.cancel = function() { 
    window.clearTimeout(this.id); 
} 

Timer.prototype.fire = function() { 
    this.cancel(); 
    this.callback(); 
} 

Ensuite, vous venez de créer des minuteries et d'accéder à leurs propriétés comme ceci:

t = new Timer(myfunc, 300); 
alert(t.timeout);