2016-04-15 11 views
17

mam taki skryptnode.js nie setTimeout zwolniony po zmianie czasu systemowego

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

Kiedy go uruchomić i zmiana czasu systemowego z powrotem na jedną godzinę, nie Timeout pożary. Jeśli zmienię czas do przodu na jedną godzinę, limit czasu działa poprawnie.

czas jest zmieniany przez zewnętrzny program, który sprawia, że ​​połączenia jak ioctl(rtcFd, RTC_SET_TIME, &newTime);

Jak rozwiązać ten problem?

Używamy node.js v0.10.15 na Attitude Adjustment OpenWrt

Dziękuję

Odpowiedz

7

po prostu założył, że jest to bug fixed in newer version. Naprawiono to za pomocą commit w wersji0.10.33.

Jeśli spełniasz ten problem, trzeba zaktualizować lub patch node.js

+0

Do szczerze polecam przejście na Węzeł v4 - jest to wersja LTS o doskonałej wydajności i bezpieczeństwie. – Ginden

+0

Węzeł v5.11 właśnie został wydany wczoraj. https://nodejs.org/en/blog/release/v5.11.0/ – Laurent

+0

W naszym szczególnym przypadku trudno było zaktualizować do najnowszej wersji v5.11. Rozwiązaliśmy problem, aktualizując do v0.10.44 –

0

użycie węzła planującego to jest na podstawie czasu planowania

npm zainstalować węzła harmonogramu

var jobId="123456abc"; 
schedule.scheduleJob(jobId, new Date(1), function() 
{                            
    schedule.cancelJob(jobId); 
    // your code here. 
});