Monday, April 25, 2016

Node.js setTimeout not fired after system time change

Leave a Comment

I have such script

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

When I run it and change system time back for one hour, the timeout not fires. If I change time forward for one hour, timeout works correctly.

Time is changed by external program which makes call like ioctl( rtcFd, RTC_SET_TIME, &newTime);

How to fix this problem?

We use Node.js v0.10.15 on OpenWRT Attitude Adjustment

Thank you

2 Answers

Answers 1

I just founded that this is a bug fixed in newer version. It fixed by this commit in v0.10.33.

If you meet this problem, you need to update or patch your node.js

Answers 2

Use node scheduler this is for time-based scheduling

npm install node-schedule

var jobId="123456abc"; schedule.scheduleJob(jobId, new Date(1), function()  {                                                                                                                   schedule.cancelJob(jobId);     // your code here. }); 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment