2011-10-28 36 views
6

Tôi muốn xóa một khoảng thời gian bằng cách sử dụng intervalId mà tôi định lưu trữ trong một tệp cục bộ.setInterval trả về đối tượng Timer và không intervalId

Tôi đã có ấn tượng rằng gán setInterval trả về intervalId nhưng tôi dường như đang nhận được [object Timer] thay thế.


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); 
}); 

Tôi đang sử dụng nút v4.9

+0

Weird, nó chắc chắn sẽ trả về một int cho tôi (và đó là tài liệu để làm như vậy) .. Liệu Node.js làm điều gì đó sôi nổi với setInterval có lẽ? –

+0

@MikeChristensen 'setInterval' dường như đang đánh dấu chính xác. Bạn đang sử dụng phiên bản nút nào? – Aaron

+1

Nó * nên * [trả lại id] (http://nodejs.org/docs/v0.4.9/api/timers.html#setInterval), OTOH, [đầu ra giao diện điều khiển của bài đăng này] (http://groups.google .com/group/nodejs/browse_thread/thread/341e7ee19a13e516? pli = 1) hiển thị thông tin khác sau khi gọi 'setInterval'. –

Trả lời

2

Nó là một đối tượng hẹn giờ, nhưng xóa theo cách bạn mong chờ nó:

$ node ./test.js

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

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

Đầu ra sau đây trong 5 giây và xóa như mong đợi:

Thông tin
FOO 
{ repeat: 0, callback: [Function] } 
FOO 
{ repeat: 0, callback: [Function] } 
FOO 
{ repeat: 0, callback: [Function] } 

thêm: http://nodejs.org/docs/v0.5.10/api/timers.html

Các vấn đề liên quan