fix: 修复 timer.Ticker.Loop 函数首次触发时会触发两次的问题

This commit is contained in:
kercylan98
2023-08-15 11:32:45 +08:00
parent fdde6f9bc7
commit 2bd6aa50cb
2 changed files with 10 additions and 9 deletions

View File

@@ -38,12 +38,14 @@ func (slf *Scheduler) Next(prev time.Time) time.Time {
slf.lock.RLock()
defer slf.lock.RUnlock()
if slf.kill || (slf.total > 0 && slf.trigger >= slf.total) {
if slf.kill || (slf.total > 0 && slf.trigger > slf.total) {
return time.Time{}
}
if slf.trigger == 0 {
slf.trigger++
return prev.Add(slf.after)
}
slf.trigger++
return prev.Add(slf.interval)
}
@@ -56,8 +58,7 @@ func (slf *Scheduler) Caller() {
return
}
slf.trigger++
if slf.total > 0 && slf.trigger >= slf.total {
if slf.total > 0 && slf.trigger > slf.total {
slf.lock.Unlock()
slf.ticker.StopTimer(slf.name)
} else {