Slide 66
Slide 66 text
func asyncHttpGets(urls []string) []*HttpResponse {
" ch := make(chan *HttpResponse, len(urls)) // buffered
" responses := []*HttpResponse{}
" for _, url := range urls {
" " go func(url string) {
" " " fmt.Printf("Fetching %s \n", url)
" " " resp, err := http.Get(url)
" " " ch <- &HttpResponse{url, resp, err}
" " }(url)
" }
" for {
" " select {
" " case r := <-ch:
" " " fmt.Printf("%s was fetched\n", r.url)
" " " responses = append(responses, r)
" " " if len(responses) == len(urls) {
" " " " return responses
" " " }
" " default:
" " " fmt.Printf(".")
" " " time.Sleep(5e7)
" " }
" }
" return responses
}
Sunday, October 21, 12