code clean
This commit is contained in:
@@ -25,6 +25,6 @@ type Void = [0]byte
|
||||
type Future[T any] func(func(T))
|
||||
|
||||
// Just for pure LLGo/Go, transpile to callback in Go+
|
||||
func Await[T1 any](call Future[T1]) (ret T1) {
|
||||
return Run(call)
|
||||
func Await[T1 any](future Future[T1]) T1 {
|
||||
return Run(future)
|
||||
}
|
||||
|
||||
@@ -19,16 +19,7 @@
|
||||
|
||||
package async
|
||||
|
||||
var exec = &Executor{}
|
||||
|
||||
type Executor struct {
|
||||
}
|
||||
|
||||
func Exec() *Executor {
|
||||
return exec
|
||||
}
|
||||
|
||||
func Run[T any](future Future[T]) (ret T) {
|
||||
func Run[T any](future Future[T]) T {
|
||||
ch := make(chan T)
|
||||
go func() {
|
||||
future(func(v T) {
|
||||
|
||||
@@ -54,15 +54,16 @@ func (e *Executor) Run() {
|
||||
e.L.Run(libuv.RUN_DEFAULT)
|
||||
}
|
||||
|
||||
func Run[T any](future Future[T]) (ret T) {
|
||||
func Run[T any](future Future[T]) T {
|
||||
loop := libuv.LoopNew()
|
||||
exec := &Executor{loop}
|
||||
oldExec := setExec(exec)
|
||||
var ret T
|
||||
future(func(v T) {
|
||||
ret = v
|
||||
})
|
||||
exec.Run()
|
||||
loop.Close()
|
||||
setExec(oldExec)
|
||||
return
|
||||
return ret
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user