uberswe / interval

Interval is a Go package which uses Golangs time.Duration to perform different functions. For example calling another function at set intervals

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

interval

Interval is a package which uses Golangs time.Duration to perform different functions.

With the DoEvery functions it is possible to call a function in Golang every x seconds. Depending on the function you can do this in a blocking or asyncronous way.

It is also possible to check if enough time has passed between two times. Such as checking if something has executed 7 days before today for example.

To call a function repeatedly at a set interval simply do this

func main() {
	lambda := func(interval time.Duration, time time.Time, extra interface{}) {
		log.Printf("do function called %s at %s\n", interval.String(), time.String())
	}
	err := interval.DoEvery("1s", nil, lambda, -1)
	if err != nil {
		log.Panicf("Error: %v", err)
	}
	log.Println("This is never called because DoEvery is blocking")
}

By passing -1 to interval.DoEvery the function will run in an infinite loop.

You can use DoEveryAsync to call a function repeatedly in a non-blocking way like so

func main() {
	lambda := func(interval time.Duration, time time.Time, extra interface{}) {
		log.Printf("do function called %s at %s\n", interval.String(), time.String())
	}
	exit, err := interval.DoEveryAsync("1s", nil, lambda, -1)
	if err != nil {
		log.Panicf("Error: %v", err)
	}
	log.Println("This is called because DoEveryAsync is non-blocking")
	// sleep for 10 seconds
	time.Sleep(time.Second * 10)
	// exit the async
	exit <- 1
}

About

Interval is a Go package which uses Golangs time.Duration to perform different functions. For example calling another function at set intervals

License:MIT License


Languages

Language:Go 100.0%