From 2edaf2216de30eddbe536c5d6363e5287bbce4bd Mon Sep 17 00:00:00 2001 From: a Date: Sat, 26 Mar 2022 20:47:22 -0500 Subject: [PATCH] add example --- examples/parallel_request.go | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 examples/parallel_request.go diff --git a/examples/parallel_request.go b/examples/parallel_request.go new file mode 100644 index 0000000..d7bbff4 --- /dev/null +++ b/examples/parallel_request.go @@ -0,0 +1,43 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "git.tuxpa.in/a/lambda/parallel" +) + +type someResult struct { + Title string `json:"title"` + Id int `json:"id"` +} + +func main() { + var requests = make([]*http.Request, 20) + + for i := range requests { + r, _ := http.NewRequest("GET", fmt.Sprintf("https://jsonplaceholder.typicode.com/todos/%d", i), nil) + requests[i] = r + } + + results, errs := parallel.MapErrorV(requests, func(r *http.Request) (*someResult, error) { + out := &someResult{} + res, err := http.DefaultClient.Do(r) + if err != nil { + return nil, err + } + defer res.Body.Close() + err = json.NewDecoder(res.Body).Decode(out) + return out, err + }, 4) + + for i, v := range results { + if errs[i] != nil { + log.Printf("err: %s", errs[i]) + } else { + log.Printf("result: %+v", v) + } + } +}