1

我的节点 js 代码中有一个全局变量。我需要在每天午夜 12 点将其值重置为 1。在 node js 中是如何实现的?我已阅读有关节点调度程序的某些文章。它是否有效或有任何其他方法?

4

2 回答 2

1

您可以使用一个简单setTimeout()的自己安排它:

let myVar = 10;

function scheduleReset() {
    // get current time
    let reset = new Date();
    // update the Hours, mins, secs to the 24th hour (which is when the next day starts)
    reset.setHours(24, 0, 0, 0);
    // calc amount of time until restart
    let t = reset.getTime() - Date.now();
    setTimeout(function() {
        // reset variable
        myVar = 1;
        // schedule the next variable reset
        scheduleReset();
    }, t);
}

scheduleReset();

任何时候你的程序启动,它都可以调用scheduleReset().

仅供参考,我从我编写的一个程序(在 Raspberry Pi 服务器上)中提取了大部分代码,该程序在每天凌晨 4 点重新启动,并且该程序已经成功地这样做了好几年。

于 2020-06-23T07:04:07.100 回答
0

使用node-schedule它应该很简单。使用正确的 cron-tab定义您的作业,并将变量重置为scheduleJob-callback 中的默认值:

const schedule = require('node-schedule');
let yourVar = 12345;

const globalResetJob = schedule.scheduleJob('0 0 * * *', () => {
  yourVar = 1;
});
于 2020-06-23T06:56:52.270 回答