Go-Promise
func main() {
GlobalEventLoop.Main(func() {
result := GetUserName(2)
result.Then(func(x interface{}) {
fmt.Println("2 : user:", x)
})
fmt.Println("run before promise returns")
GetUserName(0).Then(func(x interface{}) {
fmt.Println("0 : user:", x)
}).Catch(func(err error) {
fmt.Println("0 : err:", err)
})
GetUserName(15).Then(func(x interface{}) {
fmt.Println("15 : user:", x)
}).Catch(func(err error) {
fmt.Println("15 : err:", err)
})
// await
syncResult1 := GlobalEventLoop.Await(GetUserName(4))
fmt.Println("4 : user:", syncResult1)
syncResult2 := GlobalEventLoop.Await(GetUserName(1))
fmt.Println("1 : user:", syncResult2)
asyncResult1 := GetUserName(6)
asyncResult2 := GetUserName(3)
fmt.Println("asyncResult1", GlobalEventLoop.Await(asyncResult1))
fmt.Println("asyncResult2", GlobalEventLoop.Await(asyncResult2))
fmt.Println("done")
})
}
result
run before promise returns
0 : err: some error id(0s)
2 : user: id(2ns): Test User
4 : user: id(4ns): Test User
1 : user: id(1ns): Test User
asyncResult1 id(6ns): Test User
asyncResult2 id(3ns): Test User
done
15 : user: id(15ns): Test User
just a fun project, we might just learn something