节点计划不适用于对象变量?



我在节点中编程了一个时间表:

function setTimer(time){
t_SD1.on_h = time.on_h;
t_SD1.on_m = time.on_m;
t_SD1.off_h = time.off_h;
t_SD1.off_m = time.off_m;
console.log(t_SD1.on_h+' '+t_SD1.on_m);
}
var j = schedule.scheduleJob({hour: t_SD1.on_h, minute: t_SD1.on_m}, function(){
console.log('ONNNN');
console.log('0 '+t_SD1.on_m+' '+t_SD1.on_h+' * * *');
});

时间来自:

var obj = JSON.parse(req.query.timer);

setTimer(obj);

声明:

var t_SD1 = {on_h: 14, on_m: 52, off_h: 14, off_m: 53};

好的...现在问题来了:

当我在没有setTimer()的情况下启动它时,它工作正常。计划在 14:52 触发。但是当我启动setTimer()功能时,它不起作用。

我的控制台告诉我时间0 53 14 * * *

我也用parseInt(time.on_h)试过,但结果是一样的。

有点难以理解它在哪些条件下会失败,也不会失败,但我认为问题源于您在setTimer()之前调用scheduleJob()的事实。我认为您需要将第一个示例调整为:

function setTimer(time){
t_SD1.on_h = time.on_h;
t_SD1.on_m = time.on_m;
t_SD1.off_h = time.off_h;
t_SD1.off_m = time.off_m;
console.log(t_SD1.on_h+' '+t_SD1.on_m);
var j = schedule.scheduleJob({hour: t_SD1.on_h, minute: t_SD1.on_m}, function(){
console.log('ONNNN');
console.log('0 '+t_SD1.on_m+' '+t_SD1.on_h+' * * *');
});
}

最新更新