在特定时刻调用NodeJ功能

时间:2016-04-22 21:20:46

标签: javascript node.js task

有没有办法自动化功能并使用 Node.Js 及时调用它们?更确切地说,我想用节点js创建一个提醒。当我收到用户的日期时,我必须发送通知以提醒他/她。

我知道setTimeout()函数,但是当我拥有庞大的用户数据库时,它真的很棒吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用setTimeout()并保留服务器内的所有工作,但对于大量用户,您不一定要为每个用户设置超时。您真正需要的只是需要通知的下一个用户的单个超时。当该计时器触发时,您可以为需要通知的下一个用户设置计时器,依此类推。

可以使用按通知时间排序的对象数组来完成此操作。每次向阵列添加内容时,都会取消当前计时器,将新通知添加到阵列,对阵列进行排序并为最早的通知设置计时器。

当计时器触发时,您从阵列中删除该项目并安排下一个项目。

并且,由于您可能希望在服务器重新启动后继续运行,因此每次修改时都会将通知数组(可能是JSON格式)保存到文件或数据库中,以便在服务器重新启动时重新加载该数据。

仅供参考,如果您更愿意选择其他人已编写的代码,那么node.js的调度模块已经提供了此类功能。

其中一些模块的例子:

node-cron

agenda

node-schedule

答案 1 :(得分:0)

您正在寻找的是一个调度程序或一个cron作业(它来自Linux OS)。

在NodeJS中,您可以找到实现相同想法的node-schedule

相关问题