2011-10-28 20 views
6

Quiero borrar un intervalo utilizando su intervalId que tengo la intención de almacenar en un archivo local.setInterval devuelve Timer Object y no intervalId

Tenía la impresión de que la asignación de setInterval devuelve su intervalId pero parece que estoy obteniendo [object Timer].


var fs = require("fs"); 

var id = setInterval(function(){ 
    console.log("tick"); 
}, 1000); 

console.log(id); 

var stream = fs.createWriteStream("id"); 
stream.once('open', function(fd) { 
    stream.write(id); 
}); 

estoy usando la versión 4.9 de nodo

+0

extraño, que sin duda devuelve un int para mí (y está documentado para hacerlo) .. Hace Node.js hacer algo funky con setInterval tal vez? –

+0

@MikeChristensen 'setInterval' parece estar funcionando correctamente. ¿Qué versión de nodo estás usando por cierto? – Aaron

+1

It * should * [return the id] (http://nodejs.org/docs/v0.4.9/api/timers.html#setInterval), OTOH, [resultado de la consola de esta publicación] (http://groups.google .com/group/nodejs/browse_thread/thread/341e7ee19a13e516? pli = 1) muestra algo más después de llamar a 'setInterval'. –

Respuesta

2

Es un objeto de temporizador, pero abre el camino que se puede esperar que:

$ nodo ./test.js

var id = setInterval(function(){ 
    console.log("FOO"); 
    console.log(id); 
}, 500); 

setTimeout(function(){ 
    clearInterval(id); 
}, 5000); 

Emite lo siguiente durante 5 segundos y se borra como se esperaba:

FOO 
{ repeat: 0, callback: [Function] } 
FOO 
{ repeat: 0, callback: [Function] } 
FOO 
{ repeat: 0, callback: [Function] } 

Más información: http://nodejs.org/docs/v0.5.10/api/timers.html