2 回答
TA贡献2003条经验 获得超2个赞
如果希望节点应用程序在特定时间运行特定代码段,则可以运行一个setTimeout()递归“循环”,该循环每隔几毫秒检查一次时间。如果未经过特定时间,则setTimeout()回调将自行调用,然后过程将重新开始。但是,如果时间已过去,请执行特定的代码块并停止递归循环。
const triggerTime = new Date(2019, 05, 05, 02, 30, 0, 0)
function otherCodeToRun() {
// do something...
}
function wait() {
setTimeout(function() {
const currentTime = new Date()
if (currentTime >= triggerTime) {
otherCodeToRun() // not calling wait ends the recursive loop
} else {
wait() // recursively call wait after the timeout completes
}
}, 1000) // wait 1 second
}
从理论上讲,该otherCodeToRun()函数可以调用另一个节点进程来运行您的其他文件,或者可以将您的其他文件作为模块加载并以这种方式运行。
另外值得注意的是,您可以在while循环内执行此检查,但是,应用程序将完全阻塞,这意味着它将显得无响应,并可能占用大量CPU周期。setTimeout方法使您的应用程序有机会屈服于其他进程,从而使您可以将输出记录到控制台,例如,如果要显示倒计时。
TA贡献1880条经验 获得超4个赞
它可能看起来应该更像这样(绝对路径,以防万一):
20 14 2 5 * cd / path / to / Documents / node_bot && / path / to / node fog1.js
它于5月2日14:20运行
添加回答
举报