我正在编写一个自定义计时器类,它将根据一天中的计时器(可能还有一周中的一天)引发具有可变间隔的事件以触发数据刷新。至于粒度,我可能会在小时级别有不同的时间间隔。
到目前为止,我想出的最佳选择是使用 24 元素数组。每当计时器滴答作响时,您都会获取当前小时(24 小时)并索引到数组中以获取新的计时器间隔。我可能需要一些逻辑来处理从长间隔到短间隔会导致错过一些预期刷新的情况(例如,如果我们从长间隔变为短间隔,则在一小时的顶部截断)。
我正在寻找一种优雅的方式来做到这一点,任何维护我的代码的人都清楚,并且易于在代码中使用。有没有更好的算法/方法来做到这一点?
额外细节:
用户可以触发手动刷新,这会导致计时器重置。因此,计时器不需要勾选“按小时”或任何其他定期间隔(如1:15, 1:30, 1:45
)。用户可能会在我们刚刚检查 2 分钟后触发刷新,所以如果我们每 15 分钟检查一次,我们可能会得到类似的结果:(1:15, 1:30, 1:32, 1:47
用户手动刷新在1:32
,所以我们重置计时器并在 15 分钟后自动刷新时间点)。
由于该间隔在我正在开发的系统中是标准的,因此我可以对它进行硬编码。此时不需要它是通用的间隔计时器(尽管欢迎本质上通用的解决方案)。