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

Node schedule not working with object variable?

我已经在节点中编写了一个时间表:

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+' * * *');
  });
}