我有一个网站,允许用户在自己选择的日期给自己发送消息,但我不知道如何在特定的时间发送。我知道有CronJobs,但在这里,我不做任何重复的事情。这是一个一次性的事件触发器,我需要。
我第一次尝试使用原生的setTimeout
,如下所示:
const dueTimestamp = ...;
const timeLeft = dueTimestamp - Date().now();
const timeoutId = setTimeout(() => sendMessage(message), timeLeft);
它在短时间内运行得很好,但是我不确定它在长时间内是否可靠,比如几年甚至几十年。而且,它没有提供太多的控制,因为如果我想修改dueDate
或消息的内容,我必须停止超时并启动一个新的超时。
**是否有任何软件包、库或服务可以让您在预定时间运行NodeJS函数?**或者您有任何解决方案吗?我听说过Google Cloud Schedule或Cronhooks,但我不确定。
2条答案
按热度按时间o0lyfsai1#
您可以使用node-schedule库。例如:你想在2022年12月21日早上5:30运行一个函数。
gudnpqoy2#
按照user3425506的建议,我只是使用了一个Cron作业从数据库中获取消息,并将消息发送给那些时间戳已过期的消息。
虚拟表示: