系统时间更改后,Node.js setTimeout未触发

时间:2016-04-15 08:04:15

标签: javascript node.js timer

我有这样的剧本

setTimeout(function() 
{
    console.log("Timeout");
}, 1000 * 60);

当我运行它并将系统时间改回一小时时,超时不会触发。如果我将时间向前更改一小时,则超时工作正常。

外部程序改变了时间,使ioctl( rtcFd, RTC_SET_TIME, &newTime);

之类的调用成为可能

如何解决这个问题?

我们在OpenWRT态度调整

上使用Node.js v0.10.15

谢谢

2 个答案:

答案 0 :(得分:7)

我刚刚发现这是一个bug fixed in newer version。它在v0.10.33中由commit修复。

如果遇到此问题,则需要更新或修补node.js

答案 1 :(得分:0)

使用节点调度程序,这是基于时间的调度

npm install node-schedule

var jobId="123456abc";
schedule.scheduleJob(jobId, new Date(1), function() 
{                                                                                                              
    schedule.cancelJob(jobId);
    // your code here.
});