上下文
我实际上正在开发一个应用程序,人们在其中每天都有任务要做。就像“洗 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/