javascript - 在特定时刻调用 NodeJs 函数

标签 javascript node.js task

有没有办法自动化函数并使用Node.Js在特定时刻调用它们?更准确地说,我想用 Node js 创建一个提醒。当我收到用户的日期时,我必须发送通知以提醒他/她某件事。

我知道 setTimeout() 函数,但是当我拥有大量用户数据库时,这真的是个好主意吗?

谢谢。

最佳答案

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

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

当计时器触发时,您可以从数组中删除该项目并安排下一个项目。

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

仅供引用,如果您希望采用其他人已经编写的代码,node.js 的调度模块已经提供了此类功能。

其中一些模块的示例:

node-cron

agenda

node-schedule

关于javascript - 在特定时刻调用 NodeJs 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803497/

相关文章:

javascript - 是否可以在 React 应用程序中使用 NodeJS 启用数据库连接并在服务器中部署捆绑文件?

api - 面向任务的用户界面和 Rest 应用服务器 API

JavaScript 数组字符串比较

javascript - 在隔离范围内观看,双向绑定(bind)不起作用

node.js - 使用 npm 运行 bash 脚本

c# - Task.WaitAll(new Task[0]) 不会引发 ArgumentException

c# - 取消等待中的任务

javascript - 计算以周为单位的日期差异(Javascript)

javascript - 为什么需要 .$el,它指向什么?

php - 为什么在 laravel 中使用 npm?