fix timer

This commit is contained in:
adman
2026-03-26 22:39:48 +01:00
parent 4fd5324064
commit 9983062522
+8 -7
View File
@@ -54,22 +54,24 @@ func (t *Timer) Trigger(ch chan any) {
triggerAt := time.Time{} triggerAt := time.Time{}
found := false found := false
iOnce, iInterval := -1, -1 iOnce, iInterval := -1, -1
var oTask OnceTask
for iOnce, oTask = range t.Once { for i, oTask := range t.Once {
if oTask.Trigger.Before(triggerAt) || triggerAt.IsZero() { if oTask.Trigger.Before(triggerAt) || triggerAt.IsZero() {
found = true found = true
triggerAt = oTask.Trigger triggerAt = oTask.Trigger
break iOnce = i
} }
} }
var iTask IntervalTask
for iInterval, iTask = range t.Interval { for i, iTask := range t.Interval {
if iTask.LastTrigger.Add(iTask.Interval).Before(triggerAt) || triggerAt.IsZero() { if iTask.LastTrigger.Add(iTask.Interval).Before(triggerAt) || triggerAt.IsZero() {
found = true found = true
triggerAt = iTask.LastTrigger.Add(iTask.Interval) triggerAt = iTask.LastTrigger.Add(iTask.Interval)
break iOnce = -1
iInterval = i
} }
} }
if !found { if !found {
return return
} }
@@ -87,7 +89,6 @@ func (t *Timer) Trigger(ch chan any) {
} }
panic("unreachable") panic("unreachable")
} }
func (t *Timer) Every(interval time.Duration, f func() error) { func (t *Timer) Every(interval time.Duration, f func() error) {
t.Interval = append(t.Interval, IntervalTask{ t.Interval = append(t.Interval, IntervalTask{
F: f, F: f,