我正在使用 Later.js,并尝试使用setInterval
时间表。我得到了非常奇怪的行为,如果我及时将时间表设置得稍微提前一点,它就会起作用。但是当我使用我真正想要拥有的时间时,那些时间段什么都没有发生。我不知道出了什么问题。
"use strict";
var settings = require('./settings');
var later = require('later');
later.date.localTime();
console.log("ProjectTwo started.");
createEvents();
function createEvents() {
settings.eventSettings.forEach(function(setting) {
if (typeof setting.schedule === 'object' ) {
var schedule = { schedules: [ setting.schedule ] };
later.setInterval(function() { switchLights(setting) } , schedule);
console.log(s.next(2));
}
});
}
function switchLights(setting) {
console.log((new Date()).toLocaleString() + " " + setting.name);
}
//switchLights(settings.eventSettings[0]);
和设置:
"use strict";
var settings = {
eventSettings: [
{
id: 1,
schedule: { h: [2], m: [0]},
//schedule: { h: [16], m: [16]},
name: "One",
},
{
id: 2,
schedule: { h: [6], m: [0]},
//schedule: { h: [16], m: [9]},
condition: "if_dark",
name: "Two",
},
{
id: 3,
schedule: { h: [8], m: [30]},
//schedule: { h: [16], m: [10]},
name: "Three",
}
]
};
module.exports = settings;
如果我切换注释掉的schedule
行,它会起作用!但是当我使用未注释掉的行(我真正想要的行)时,在凌晨 2:00、早上 6:00 和早上 8:30 什么都没有发生。
查看 console.log(s.next(2)) 打印输出,它们总是正确的。但是在那些时候什么都不会发生,如果他们在未来更远一点的话。
编辑
我现在做了进一步的测试,结果证明,这是我如何运行应用程序的问题。我在 Raspberry Pi 上使用 NOHUP 运行它(在其他情况下也有效)。由于某种原因,这不起作用。然后我尝试使用pm2运行相同的代码。效果很好!