2016-05-11 10 views
6

ラズベリーPIでは長いsetTimeoutsがトリガーされないが、Ubuntu/x64とOSXでは長くかかる問題があります。ラズベリーPIのNodeJSで長いsetTimeout

'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の上Alarm! 8時間後にエコーしますが、それはRPIにトリガーされません。

作品:

  • のUbuntu/x64の
  • OSX

動作しません:

  • RPI Bは+をRaspian 7(ノード6.1)
  • RPI 3でRaspian 8(ノード4.4.4,6.0,6.1)

psによると、スクリプトがSl状態になっている:私は、Web UIを通じてスクリプトを制御することができ、このコードのより複雑なバージョンでInterruptible sleep (waiting for an event to complete), is multi-threaded (using CLONE_THREAD, like NPTL pthreads do).

、「アラーム」とは、集合後に消灯します(Webアプリケーションに目を覚ますために)Web UIにアクセスするときだけです。

これはNodeJSバグですか、何かファンキーなことをしていますか?

+1

これは既知の問題です。https://github.com/nodejs/node/issues/4262 – Znarkus

+0

私は同じことを経験しました。この問題はまだ顕著です – jamesfmackenzie

答えて

0

これを追加すると、NodeJSの問題が修正されるまで解決されます。

// Every 20 min to keep awake 
setInterval(() => 1, 1000 * 60 * 20); 
関連する問題