我有一个奇怪的问题,长 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/x64
- 操作系统
不起作用:
- RPI b+ 与 Raspian 7( Node 6.1)
- RPI 3 与 Raspian 8( Node 4.4.4、6.0 和 6.1)
根据ps
,脚本处于Sl
状态:可中断 sleep (等待事件完成),是多线程的(使用CLONE_THREAD,比如NPTL pthreads 做)。
在此代码的更复杂版本中,我可以通过 Web UI 控制脚本,“警报”将在设置时间后关闭,但仅当我访问 Web UI 时(唤醒应用程序? ).
这是 NodeJS 错误还是我在做一些时髦的事情?
最佳答案
添加这个解决它,直到 NodeJS 问题得到解决。
// Every 20 min to keep awake
setInterval(() => 1, 1000 * 60 * 20);
关于node.js - Raspberry PI 上 NodeJS 中的长 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37153589/