- AfterFuncWithRecover

This commit is contained in:
gazebo
2019-03-15 10:19:02 +08:00
parent 319866fe63
commit 0b9e42161b
2 changed files with 20 additions and 7 deletions

View File

@@ -155,10 +155,21 @@ func CallFuncAsync(funcToCall func()) {
}()
}
func AfterFuncWithRecover(duration time.Duration, funcToCall func()) *time.Timer {
return time.AfterFunc(duration, func() {
defer func() {
if r := recover(); r != nil {
baseapi.SugarLogger.Errorf("error when calling func:%v, r:%v", funcToCall, r)
}
}()
funcToCall()
})
}
func CallFuncRetryAsync(handler func(int) error, duration time.Duration, retryCount int) (err error) {
err = handler(retryCount)
if err != nil && retryCount > 0 {
time.AfterFunc(duration, func() {
AfterFuncWithRecover(duration, func() {
CallFuncRetryAsync(handler, duration, retryCount-1)
})
}