- AfterFuncWithRecover
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user