async.Run as global context, async operations run immediately

This commit is contained in:
Li Jie
2024-09-10 11:43:44 +08:00
parent 44c4488fcc
commit 12f460e376
4 changed files with 178 additions and 220 deletions

View File

@@ -27,20 +27,18 @@ func Async[T any](fn func(func(T))) Future[T] {
var wg sync.WaitGroup
wg.Add(1)
return func(chain func(T)) {
once.Do(func() {
go func() {
fn(func(v T) {
result = v
wg.Done()
})
}()
})
once.Do(func() {
go func() {
wg.Wait()
chain(result)
fn(func(v T) {
result = v
wg.Done()
})
}()
})
return func(chain func(T)) {
wg.Wait()
chain(result)
}
}