node.js:如何使用 setInterval 和 clearInterval?

新手上路,请多包涵

这是我在 nodeJS 中的 JS:

 function test(a, room, seconds) {
    console.log(a, room, seconds);
}

intervalid = setInterval(test, 1000, 'room', 20);
console.log('intervalid', intervalid);

这返回了我的输出:

 intervalid Timeout {
    _called: false,
    _idleTimeout: 1000,
    _idlePrev: TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
        _unrefed: false,
        msecs: 1000,
        nextTick: false
    },
    _idleNext: TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
        _unrefed: false,
        msecs: 1000,
        nextTick: false
    },
    _idleStart: 377,
    _onTimeout: [Function: test],
    _timerArgs: [ 'room', 20 ],
    _repeat: 1000
}

而在简单的 Javascript 中,它返回一个简单的 INTEGER 数字

当我将间隔附加到现有用户对象时,例如:

 user.intervalid = setInterval(test, 1000, 'room', 20);

我无法再 clearInterval 了:

 clearInterval(user.intervalid); // does not work

原文由 yarek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

使用 setInterval()

如果您需要以指定的时间间隔重复执行代码块怎么办?为此,Node 具有称为 setInterval() 和 clearInterval() 的方法。 setInterval() 函数与 setTimeout() 非常相似,使用相同的参数,例如回调函数、延迟以及传递给回调函数的任何可选参数。

setInterval() 的一个简单示例如下所示:

 var interval = setInterval(function(str1, str2) {
  console.log(str1 + " " + str2);
}, 1000, "Hello.", "How are you?");

clearInterval(interval);

当您希望每分钟只运行一个间隔时,这是另一种方式

function intervalFunc() {
    console.log("Hello!!!!");
     }
    setInterval(intervalFunc,1500);

在上面的示例中,intervalFunc() 将大约每 1500 毫秒或 1.5 秒执行一次,直到它停止。希望这可以帮助。

原文由 Syed Ayesha Bebe 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以在以下示例中使用 “this”

 const dgram = require('dgram');
const message = Buffer.from('from raspberry pi 3');
const client = dgram.createSocket('udp4');
var count = 0;

function intervalFunc() {
  count++;
  client.send(message, 3001, 'localhost', (err) => {
    //client.close();
  });
  if (count == '5') {
    clearInterval(this);
  }
}
setInterval(intervalFunc, 1500);

原文由 farshad-nsh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题