mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-03 13:21:56 +02:00
20 lines
500 B
Go
20 lines
500 B
Go
|
package lo
|
||
|
|
||
|
// Attempt invokes a function N times until it returns valid output. Returning either the caught error or nil. When first argument is less than `1`, the function runs until a sucessfull response is returned.
|
||
|
func Attempt(maxIteration int, f func(int) error) (int, error) {
|
||
|
var err error
|
||
|
|
||
|
for i := 0; maxIteration <= 0 || i < maxIteration; i++ {
|
||
|
// for retries >= 0 {
|
||
|
err = f(i)
|
||
|
if err == nil {
|
||
|
return i + 1, nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return maxIteration, err
|
||
|
}
|
||
|
|
||
|
// throttle ?
|
||
|
// debounce ?
|