用于处理重复性任务的警报模式

Alert pattern to handle repetitive tasks

上下文

我实际上正在开发一个应用程序,让人们在一天内完成任务。就像 "wash the window, clean the floor" 等等...等等...

每个任务都有一个周期,需要在这个周期内至少完成一次。

示例

任务 1 必须每 15 天完成一次。实际上,它已经16天没有完成了。所以应该发出一个事件。

我的客户需要在某些事情还没有完成时得到提醒,在时间事件上,以适当的方式

我知道为此存在 cron 任务,我可以 运行 每天午夜一个,并用它发送邮件警报。但是如果我需要恰好 15 天呢?秒秒?

我真的需要效率,而不是每天 运行 宁这样的脚本。

有没有更好的方法?

在 Javascript 中处理定时事件的最简单方法是通过 setInterval

您应该记住函数的区间大小参数是一个 32 位整数,它将其大小限制为 2147483647

此参数以毫秒为单位给出,因此您的最大间隔约为 24 天 (2147483647 / (1000 [ms in a sec] * 3600 [secs in an hour] * 24 [hours in a day])。

您所要做的就是:

setInterval(function(){
    doWhateverYouNeedHere();
}, interval);

编辑

您可以通过使用较小的间隔堆叠递归 setTimeout 调用来解决间隔大小参数问题:

setTimeout(function(){
    setTimeout(function(){
        doWhateverYouNeedHere();

        setTimeout(function(){
            setTimeout(function(){
                doWhateverYouNeedHere();
            }, not_so_big_interval);
        }, not_so_big_interval);
    }, not_so_big_interval); // max 24 days
}, not_so_big_interval); // max 24 days
// In total, your function will run every 48 days.