26 lines
326 B
Go
26 lines
326 B
Go
|
|
package common
|
||
|
|
|
||
|
|
import (
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func Schedule(seconds time.Duration, task func()) (stop func()) {
|
||
|
|
ticker := time.NewTicker(seconds)
|
||
|
|
quit := make(chan struct{})
|
||
|
|
go func() {
|
||
|
|
for {
|
||
|
|
select {
|
||
|
|
case <-ticker.C:
|
||
|
|
task()
|
||
|
|
case <-quit:
|
||
|
|
ticker.Stop()
|
||
|
|
return
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}()
|
||
|
|
|
||
|
|
return func() {
|
||
|
|
close(quit)
|
||
|
|
}
|
||
|
|
}
|