Javascript 定时函数中的意外行为

Javascript 定时函数中的意外行为,javascript,node.js,timing,Javascript,Node.js,Timing,我尝试计算两个日期之间的时间,如果计数器为0,则运行一些代码,这基本上可以正常工作。问题是什么时候应该运行代码,而不是什么时候。 例如: 这是休息时间 setInterval(function() { eventCountDown(); }, 1 * 60 * 1000); 然后我从数据库中得到一些文本 function eventCountDown() { database.getNextEventDate(function(err, result) { if

我尝试计算两个日期之间的时间,如果计数器为0,则运行一些代码,这基本上可以正常工作。问题是什么时候应该运行代码,而不是什么时候。 例如:

这是休息时间

setInterval(function() {
    eventCountDown();
}, 1 * 60 * 1000);
然后我从数据库中得到一些文本

function eventCountDown() {
    database.getNextEventDate(function(err, result) {
        if (!err) {
            calcEventDate(result[0]['event_start'], result[0]['event_end'], result[0]['id']);
        }
    });
}
在这里,我计算日期并更新数据库

function calcEventDate(dt, edt, id) {
if (new Date(dt) - new Date() >= 0 && new Date(dt) - new Date() < new Date(edt) - new Date()) {
    dt = new Date(dt);
    var n = new Date();
    var dst = dt - n;

    var d = Math.floor(dst / (1000 * 60 * 60 * 24));
    var h = Math.floor((dst % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var m = Math.floor((dst % (1000 * 60 * 60)) / (1000 * 60));
    var s = Math.floor((dst % (1000 * 60)) / 1000);

    if (d == 1 && h == 0 && m == 0) {
        sendMessageToEventChat("initial_message", id);
    } else if (d == 0 && h == 0 && m == 0) {
        //This part is not working fine
        database.updateEventStatus(id, "RUNNING", function(err, result) {
            if (!err) {
                sendMessageToEventChat("start", id);
                initEvent(id);
            }
        });

    }
} 
}

您可以添加一些console.log()来查看代码是否以及何时执行吗?@liorahaydonti添加了日志。不幸的是,目前它正在工作。我正在尝试将日期设置为几小时后,并检查是否有任何错误。但任何错误都会记录在控制台中。所以我会知道如果有什么不起作用。
console.log(new Date(dt) - new Date() >= 0 && new Date(dt) - new Date() < new Date(edt) - new Date());
console.log(d + "D " + h + "H " + m + "M " + s + "S");
console.log(err); //Error from updating event status
console.log(result); // Result form updating event status

true
0D 0H 0M 19S
null
OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 1  Warnings: 0',
  protocol41: true,
  changedRows: 1 }