节点计划不能与对象变量一起使用?

时间:2018-10-06 14:28:51

标签: javascript node.js scheduler

我已经在节点中设置了时间表:

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)尝试过,但结果相同。

1 个答案:

答案 0 :(得分:0)

很难理解它在什么条件下会失败,但我认为问题出在您在scheduleJob()之前调用setTimer()的事实。我认为您需要将第一个示例调整为:

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