2016-05-11 35 views
6

Tôi gặp vấn đề lạ khi setTimeouts dài không kích hoạt trên Raspberry PI, nhưng chúng hoạt động trên Ubuntu/x64 và OSX.Dài setTimeout trong NodeJS trên Raspberry PI

'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); 

Mã này sẽ lặp lại Alarm! sau 8 giờ trên Ubuntu/x64, nhưng nó không bao giờ kích hoạt trên RPI.

trình:

  • Ubuntu/x64
  • OSX

Không làm việc:

  • RPI b + với Raspian 7 (Node 6.1)
  • RPI 3 với Raspian 8 (Nút 4.4.4, 6.0 và 6.1)

Theo ps kịch bản là ở Sl nhà nước: Interruptible sleep (waiting for an event to complete), is multi-threaded (using CLONE_THREAD, like NPTL pthreads do).

Trong một phiên bản phức tạp hơn của mã này, nơi tôi có thể kiểm soát các kịch bản thông qua một giao diện người dùng Web, "báo động" sẽ đi ra sau khi tập thời gian, nhưng chỉ khi tôi truy cập vào giao diện người dùng web (để đánh thức ứng dụng?).

Đây có phải là lỗi NodeJS hay tôi đang làm điều gì đó sôi nổi?

+1

Tìm thấy điều này, có vẻ là một sự cố đã biết: https://github.com/nodejs/node/issues/4262 – Znarkus

+0

Tôi cũng đã trải nghiệm như vậy. Vấn đề này vẫn còn nổi bật – jamesfmackenzie

Trả lời

0

Việc này sẽ giải quyết nó, cho đến khi vấn đề NodeJS được sửa.

// Every 20 min to keep awake 
setInterval(() => 1, 1000 * 60 * 20); 
Các vấn đề liên quan