每天午夜运行一个函数

walk.on('dir', function (dir, stat) { uploadDir.push(dir); }); 

我正在使用节点,我需要使这个function在午夜每天运行,这是可能的吗?

我相信节点时间表包将适合您的需求。 一般来说,你想要所谓的cron来安排和运行你的服务器任务。

使用节点时间表

 import schedule from 'node-schedule' schedule.scheduleJob('0 0 * * *', () => { ... }) // run everyday at midnight 

这个node-schedule有一个节点包。

你可以做这样的事情:

 var j = schedule.scheduleJob({hour: 00, minute: 00}, function(){ walk.on('dir', function (dir, stat) { uploadDir.push(dir); }); }); 

欲了解更多信息,请看这里

这是其他一些长期运行过程的一部分吗? 它真的需要吗? 如果是我,我只需要编写一个快速运行的脚本,使用普通的旧cron来安排它,然后在该过程完成时终止它。

偶尔,将这些计划的任务build立到另外一个长期运行的过程中(这是我自己完成的),在这些情况下,其他答案中提到的库是最好的select,或者你总是可以写一个setTimeout()setInterval()循环来检查你的时间,并在时间匹配时运行你的进程。 但是对于大多数场景来说,由cron发起的单独的脚本和单独的过程就是你真正的追求。

我使用下面的代码:

 function resetAtMidnight() { var now = new Date(); var night = new Date( now.getFullYear(), now.getMonth(), now.getDate() + 1, // the next day, ... 0, 0, 0 // ...at 00:00:00 hours ); var msToMidnight = night.getTime() - now.getTime(); setTimeout(function() { reset(); // <-- This is the function being called at midnight. resetAtMidnight(); // Then, reset again next midnight. }, msToMidnight); } 

我认为在午夜运行一个函数有合法的用例。 例如,就我而言,我在网站上显示了一些日常的统计数据。 如果网站恰好在午夜开放,则需要重新设置这些统计数据。

此外,信贷给这个答案。