41 lines
833 B
Go
41 lines
833 B
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/goplus/llgo/x/io"
|
||
|
|
)
|
||
|
|
|
||
|
|
var GetUser = io.Async[any](func(string) any {
|
||
|
|
panic("todo: GetUser")
|
||
|
|
})
|
||
|
|
|
||
|
|
var GetScore = io.Async[float64](func() float64 {
|
||
|
|
panic("todo: GetScore")
|
||
|
|
})
|
||
|
|
|
||
|
|
var DoUpdate = io.Async[io.Void](func(op string) io.Void {
|
||
|
|
panic("todo: DoUpdate")
|
||
|
|
})
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
user, err := GetUser("123").Await()
|
||
|
|
fmt.Println(user, err)
|
||
|
|
|
||
|
|
user, err = io.Race(GetUser("123"), GetUser("456"), GetUser("789")).Await()
|
||
|
|
fmt.Println(user, err)
|
||
|
|
|
||
|
|
user, score, _, err := io.Await3[any, float64, io.Void](GetUser("123"), GetScore(), DoUpdate("update sth."))
|
||
|
|
fmt.Println(user, score, err)
|
||
|
|
|
||
|
|
select {
|
||
|
|
case user := <-GetUser("123"):
|
||
|
|
fmt.Println("user:", user)
|
||
|
|
case score := <-GetScore():
|
||
|
|
fmt.Println("score:", score)
|
||
|
|
case <-io.Timeout(5 * time.Second):
|
||
|
|
fmt.Println("timeout")
|
||
|
|
}
|
||
|
|
}
|