asyncio: demo comments
This commit is contained in:
@@ -19,6 +19,7 @@ type Response struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Response) Text() (resolve io.Promise[string]) {
|
func (r *Response) Text() (resolve io.Promise[string]) {
|
||||||
|
// return r.Body, nil
|
||||||
resolve(r.Body, nil)
|
resolve(r.Body, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -105,26 +106,31 @@ type User struct {
|
|||||||
func GetUser(name string) (resolve io.Promise[User]) {
|
func GetUser(name string) (resolve io.Promise[User]) {
|
||||||
resp, err := AsyncHttpGet("http://example.com/user/" + name).Await()
|
resp, err := AsyncHttpGet("http://example.com/user/" + name).Await()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// return User{}, err
|
||||||
resolve(User{}, err)
|
resolve(User{}, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
|
// return User{}, fmt.Errorf("http status code: %d", resp.StatusCode)
|
||||||
resolve(User{}, fmt.Errorf("http status code: %d", resp.StatusCode))
|
resolve(User{}, fmt.Errorf("http status code: %d", resp.StatusCode))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := resp.Text().Await()
|
body, err := resp.Text().Await()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// return User{}, err
|
||||||
resolve(User{}, err)
|
resolve(User{}, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
user := User{}
|
user := User{}
|
||||||
if err := json.Unmarshal([]byte(body), &user); err != nil {
|
if err := json.Unmarshal([]byte(body), &user); err != nil {
|
||||||
|
// return User{}, err
|
||||||
resolve(User{}, err)
|
resolve(User{}, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return user, nil
|
||||||
resolve(user, nil)
|
resolve(user, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -190,26 +196,32 @@ func GetUserCompiled(name string) *io.PromiseImpl[User] {
|
|||||||
func GetScore() (resolve io.Promise[float64]) {
|
func GetScore() (resolve io.Promise[float64]) {
|
||||||
resp, err := AsyncHttpGet("http://example.com/score/").Await()
|
resp, err := AsyncHttpGet("http://example.com/score/").Await()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// return 0, err
|
||||||
resolve(0, err)
|
resolve(0, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
|
// return 0, fmt.Errorf("http status code: %d", resp.StatusCode)
|
||||||
resolve(0, fmt.Errorf("http status code: %d", resp.StatusCode))
|
resolve(0, fmt.Errorf("http status code: %d", resp.StatusCode))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := resp.Text().Await()
|
body, err := resp.Text().Await()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// return 0, err
|
||||||
resolve(0, err)
|
resolve(0, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
score := 0.0
|
score := 0.0
|
||||||
if _, err := fmt.Sscanf(body, "%f", &score); err != nil {
|
if _, err := fmt.Sscanf(body, "%f", &score); err != nil {
|
||||||
|
// return 0, err
|
||||||
resolve(0, err)
|
resolve(0, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return score, nil
|
||||||
resolve(score, nil)
|
resolve(score, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -273,15 +285,18 @@ func GetScoreCompiled() *io.PromiseImpl[float64] {
|
|||||||
func DoUpdate(op string) (resolve io.Promise[io.Void]) {
|
func DoUpdate(op string) (resolve io.Promise[io.Void]) {
|
||||||
resp, err := AsyncHttpPost("http://example.com/update/" + op).Await()
|
resp, err := AsyncHttpPost("http://example.com/update/" + op).Await()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// return err
|
||||||
resolve(io.Void{}, err)
|
resolve(io.Void{}, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
|
// return fmt.Errorf("http status code: %d", resp.StatusCode)
|
||||||
resolve(io.Void{}, fmt.Errorf("http status code: %d", resp.StatusCode))
|
resolve(io.Void{}, fmt.Errorf("http status code: %d", resp.StatusCode))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return nil
|
||||||
resolve(io.Void{}, nil)
|
resolve(io.Void{}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -446,6 +461,7 @@ func Demo() (resolve io.Promise[io.Void]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// for loop with async generator
|
// for loop with async generator
|
||||||
|
// for u, err := range GenUsers() {...}
|
||||||
g1 := GenUsers()
|
g1 := GenUsers()
|
||||||
for {
|
for {
|
||||||
g.Call()
|
g.Call()
|
||||||
|
|||||||
Reference in New Issue
Block a user