javascript - 处理重复任务的警报模式

标签 javascript node.js design-patterns

上下文

我实际上正在开发一个应用程序,人们在其中每天都有任务要做。就像“洗 window ,擦地板”等等......等等......

每个任务都有一个重复周期,并且在此期间至少需要完成一次。

示例:

任务 1 必须每 15 天完成一次。事实上,已经16天了,这件事还没有完成。因此应该发出一个事件。

当某些事情尚未完成时,我的客户需要在某个时间事件上以适当的方式收到警报

我知道为此存在 cron 任务,我可以每天午夜运行一个任务,并以此发送邮件警报。但如果我需要正好 15 天怎么办?秒接着秒?

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

有更好的方法吗?

最佳答案

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

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

此参数以毫秒为单位,因此最大间隔约为 24 天 (2147483647/(1000 [每秒毫秒] * 3600 [一小时秒] * 24 [一天小时]).

您所要做的就是:

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.

关于javascript - 处理重复任务的警报模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31677417/

相关文章:

javascript - nodejs npm mysql返回单行句柄

sql - 如何在 node.js MSSQL 中执行具有可变表名的查询?

android - 在 Roboguice 中使用依赖注入(inject)?

javascript - 函数内的变量困惑

javascript - 改变元素的尺寸

javascript - nodejs ExpressJS 路由仅适用于索引

Java Map反模式?

javascript - Ajax - JQuery,数组到查询字符串

javascript - 如何定义搜索词框以使用 Twitter 流 API 和meteor.js 搜索用户的特定时间线

c# - 什么是 C# 中好的线程安全单例通用模板模式