Revert "feat(concurrency): adding lo.WaitFor"

This reverts commit 2f6f28e6fc.
This commit is contained in:
Samuel Berthe
2022-11-15 18:59:03 +01:00
parent 2f6f28e6fc
commit 5781b44b25
2 changed files with 1 additions and 65 deletions

View File

@@ -1,9 +1,6 @@
package lo
import (
"sync"
"time"
)
import "sync"
type synchronize struct {
locker sync.Locker
@@ -96,35 +93,3 @@ func Async6[A any, B any, C any, D any, E any, F any](f func() (A, B, C, D, E, F
}()
return ch
}
// WaitFor runs periodically until a condition is validated.
func WaitFor(condition func(i int) bool, maxDuration time.Duration, tick time.Duration) bool {
ch := make(chan bool, 1)
timer := time.NewTimer(maxDuration)
defer timer.Stop()
ticker := time.NewTicker(tick)
defer ticker.Stop()
i := 0
for tick := ticker.C; ; {
select {
case <-timer.C:
return false
case <-tick:
tick = nil
currentIndex := i
i++
go func() { ch <- condition(currentIndex) }()
case v := <-ch:
if v {
return true
}
tick = ticker.C
}
}
}

View File

@@ -212,32 +212,3 @@ func TestAsyncX(t *testing.T) {
}
}
}
func TestWaitFor(t *testing.T) {
t.Parallel()
testWithTimeout(t, 100*time.Millisecond)
is := assert.New(t)
alwaysTrue := func(i int) bool { return true }
alwaysFalse := func(i int) bool { return false }
is.True(WaitFor(alwaysTrue, 10*time.Millisecond, time.Millisecond))
is.False(WaitFor(alwaysFalse, 10*time.Millisecond, time.Millisecond))
laterTrue := func(i int) bool {
return i > 5
}
is.True(WaitFor(laterTrue, 10*time.Millisecond, time.Millisecond))
is.False(WaitFor(laterTrue, 10*time.Millisecond, 5*time.Millisecond))
counter := 0
alwaysFalse = func(i int) bool {
is.Equal(counter, i)
counter++
return false
}
is.False(WaitFor(alwaysFalse, 10*time.Millisecond, time.Millisecond))
}