【问题标题】:setInterval returns Timer Object and not intervalIdsetInterval 返回 Timer 对象而不是 intervalId
【发布时间】:2011-12-17 10:34:01
【问题描述】:

我想使用我打算存储在本地文件中的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

【问题讨论】:

  • 很奇怪,它肯定会为我返回一个 int (并且有文档证明这样做).. node.js 是否对 setInterval 做了一些时髦的事情?
  • @MikeChristensen setInterval 似乎是正确的。顺便问一下,您使用的是什么版本的节点?
  • 应该 return the id, OTOH, this post's console output 在调用setInterval 后显示其他内容。
  • 我没有使用 node.js,我只是尝试使用独立的 Javascript。
  • 我认为 node.js 使用 setInterval 方法并对其进行了更改,并且他们的文档很糟糕。你能在调试器中查看对象吗?也许它有一些你可以记录的数字 ID 属性..

标签: javascript node.js timeout setinterval


【解决方案1】:

它是一个计时器对象,但清除了您期望的方式:

$ 节点 ./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

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 2013-12-29
    • 2014-12-07
    • 2020-10-06
    • 2016-11-07
    • 2020-04-11
    • 2015-04-13
    • 2014-11-28
    相关资源
    最近更新 更多