NodeJS – 安排一个非常简单的任务在特定的date时间运行

我正在实施一个预约系统,我需要logging接受工作和开始工作之间的时间概念,以及工作的持续时间。 当达到工作起始时间时,我需要从“A状态”移动到“B状态”,一旦达到工作的结束时间,就从“B状态”移动到“C状态”。

我知道我可以使用像Bull或Bee-Queue这样的队列系统来实现这个function,但这似乎是错误的,因为我只需要改变我的工作状态,而不是执行任何后台处理。

我怎么能简单地说:“在下午3点,把这个任务改成'B'状态,下午5点,把这个任务改成'状态C'。

我可以每分钟轮询我的数据库吗? 这是“正确的”方法吗?

如何使用node-cron模块? 您可以使用node-cron根据时间,频率等来安排作业。有关更多示例, 请参阅官方链接https://www.npmjs.com/package/node-cron

我贴了一个参考

var cron = require('node-cron'); cron.schedule('* * * * *', function(){ console.log('running a task every minute'); }); 

不涉及调度的方法是在请求时计算state属性的值。

恰好在下午3点更新state值,而不是在有人请求预订资源时检查当前时间。 如果是在下午3点和下午5点,则返回state为“国家B”。 如果它的下午5点,返回state为'国家C'。

你可以使用setTimeout(function, timeout)在一定时间内调度任务。

 var now = new Date(); //creates date object at current time var date = new Date(...); //create first state-changing time //Execute task after (date - now) milliseconds setTimeout(function(){ //execute tasks }, date - now); 

现在你可以在setTimeout()里用set循环来完成你的任务!