node.js - 更改系统时间时如何使用 setInterval/setTimeout 解决 NodeJS 稳定错误

标签 node.js timer settimeout setinterval

在当前稳定版本的node.js v0.10.33 there is a bug将系统时间设置为过去时,setTimeout/setInterval 不再触发。

运行这段代码看看我的意思:

var i = 0;

var handle = setInterval(function()
{
    console.log(++i);
}, 1000);

然后在运行时将系统时间更改为过去的时间,无论是在 Windows 还是 Linux 上。间隔/超时将不再触发。当将时间更改为 future 时, Node 表现得非常好并保持运行间隔。这个错误在 Node v0.11.3 中已修复,但我还无法使用,因为它不稳定。

我尝试了像timer-shim这样的模块和 nanotimer但他们内部也使用 setInterval/setTimeout ,因此有同样的问题。

目前,我怎样才能以最好的方式解决我的应用程序的这个 Node 错误,而无需进行时髦的猴子修补?

最佳答案

这在旧版本的 0.10 分支中已修复:https://nodejs.org/en/blog/release/v0.10.36/

关于node.js - 更改系统时间时如何使用 setInterval/setTimeout 解决 NodeJS 稳定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458602/

相关文章:

javascript - 停止在 native react 中重新渲染特定 View

java - Android - 在 Chronometer 中计算耗时

Javascript 使用 promise 等待条件为真

Javascript 代码在 Node 中不起作用?

c# threading Timer 需要自己停止异步套接字代码

foreach : need help creating a closure 中的 Javascript setTimeout

javascript - 使用 multer 传递 memoryStorage 以用 ajax 表达,但 req.file 未定义

javascript - 错误 : Write After End Node. js,Express

javascript - 使用 Express.js 和 Kue.js 集群

node.js - Sequelize.js. 如何在 findAndCountAll 函数中使用包含顺序?