setInterval返回Timer对象而不是intervalId

时间:2011-10-28 16:29:48

标签: javascript node.js timeout setinterval

我想通过使用我打算存储在本地文件中的intervalId来清除间隔。

我的印象是,分配setInterval会返回intervalId,但我似乎得到了[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);
});

我使用的是节点v4.9

1 个答案:

答案 0 :(得分:2)

它是一个计时器对象,但是按照你期望的方式清除:

$ node ./test.js

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

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

输出以下内容5秒钟,并按预期清除:

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

更多信息:http://nodejs.org/docs/v0.5.10/api/timers.html