2011-10-28 10 views
6

Chcę wyczyścić interwał przy użyciu jego intervalId, który zamierzam przechowywać w pliku lokalnym.setInterval zwraca obiekt Timer, a nie interInterID

Miałem wrażenie, że przypisanie setInterval zwróci wartość intervalId, ale zamiast tego uzyskuję [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); 
}); 

używam węzła v4.9

+0

Weird, to na pewno zwraca int dla mnie (i to udokumentowane, aby to zrobić) .. Czy node.js coś zrobić ostry z setInterval może być? –

+0

"SetInterval" @MikeChristensen wydaje się poprawnie zaznaczać. Którą wersję węzła używasz po drodze? – Aaron

+1

It * should * [return the id] (http://nodejs.org/docs/v0.4.9/api/timers.html#setInterval), OTOH, [dane wyjściowe konsoli tego posta] (http://groups.google .com/group/nodejs/browse_thread/thread/341e7ee19a13e516? pli = 1) pokazuje coś innego po wywołaniu 'setInterval'. –

Odpowiedz

2

Jest to obiekt timer, ale toruje drogę byś go oczekiwać:

$ node ./test.js

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

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

Wysyła następujące informacje przez 5 sekund i czyści zgodnie z oczekiwaniami:

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

Więcej informacji: http://nodejs.org/docs/v0.5.10/api/timers.html