Raspberry PI上的NodeJS中的long setTimeout

时间:2016-05-11 05:14:02

标签: node.js raspberry-pi

我有一个奇怪的问题,即长时间的setTimeouts不会在Raspberry PI上触发,但它们会在Ubuntu / x64和OSX上执行。

'use strict';

const delay = 1000 * 3600 * 8;
const date = new Date();

date.setTime(new Date().getTime() + delay);
console.log('Alarm set to', date.toString());

setTimeout(function () {
    console.log('Alarm!', new Date());
}, delay);

此代码将在Ubuntu / x64上8小时后回显Alarm!,但它永远不会在RPI上触发。

使用:

  • Ubuntu的/ 64
  • OSX

不能工作:

  • RPI b +与Raspian 7(节点6.1)
  • 带有Raspian 8的RPI 3(节点4.4.4,6.0和6.1)

根据ps,该脚本处于Sl州:Interruptible sleep (waiting for an event to complete), is multi-threaded (using CLONE_THREAD, like NPTL pthreads do).

在此代码的更复杂版本中,我可以通过Web UI控制脚本,"警报"将在设定的时间后关闭,但仅在我访问Web UI时(唤醒应用程序?)。

这是一个NodeJS错误还是我在做一些时髦的事情?

1 个答案:

答案 0 :(得分:0)

添加此功能解决了这个问题,直到修复了NodeJS问题。

// Every 20 min to keep awake
setInterval(() => 1, 1000 * 60 * 20);