NodeJS - 安排在特定日期时间运行的非常简单的任务

时间:2017-01-31 19:38:29

标签: node.js scheduled-tasks hapijs

我正在实施预订系统,我需要记录接受工作和工作开始之间的时间概念,然后记录工作的持续时间。我需要在达到工作的开始时间时从“状态A”移动到“状态B”,然后在达到工作结束时从“状态B”移动到“状态C”。

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

我怎样才能简单地说“在下午3点,将此任务更改为'状态B',并在下午5点将此任务更改为'状态C'”。

我可以每分钟查看一下我的数据库吗?这是'正确'的方法吗?

3 个答案:

答案 0 :(得分:2)

如何使用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');
});

答案 1 :(得分:0)

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

不是在下午3点更新state的值,而是检查有人请求预订资源的当前时间。如果它是< 3pm<< 5pm,则返回state作为'状态B'。如果> 5 pm,请将state作为'状态C'返回。

答案 2 :(得分:0)

您可以使用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()里面做setTimeout()来完成你的任务!