On Wed, 25 Oct 2017 06:30:09 -0700 (PDT)
[email protected] wrote:
> I am expecting to show url1 (2 sec ), url2 (4 sec ) but not url3( 6
> sec) where timeout is 5 sec
>
> but program showing only url1 value
>
> Please help
>
> https://play.golang.org/p/aMOoSEHjmZ
>
> Thanks in advance
>
> Rgds,
>
> Abhi
>
>
> package main
>
> import "fmt"
> import "time"
>
> func InvokeUrl1(u string, val chan<- string) {
> time.Sleep(2 * time.Second)
> val <- "Url1 Value"
> }
> func InvokeUrl2(u string, val chan<- string) {
> time.Sleep(4 * time.Second)
> val <- "Url2 Value"
> }
> func InvokeUrl3(u string, val chan<- string) {
> time.Sleep(6 * time.Second)
> val <- "Url3 Value"
> }
>
> func GetUrlValues(urls []string) {
>
> ch := make(chan string, 1)
> for _, url := range urls {
> go func(u string) {
> val := make(chan string)
> if u == "url1" {
> go InvokeUrl1(u, val)
> } else if u == "url2" {
> go InvokeUrl2(u, val)
> } else if u == "url3" {
> go InvokeUrl3(u, val)
> }
>
> select {
> case ret := <-val:
> ch <- ret
> case <-time.After(5 * time.Second):
> ch <- "nil"
> }
> }(url)
> }
> fmt.Println(<-ch)
You only print once, it suppose to be inside the loop or wrapped with
select while <-ch != "nil".
> }
> func main() {
> GetUrlValues([]string{"url1", "url2", "url3"})
> }
>
--
{ "name":"Mhd Sulhan", "phone":"+628567826625", "site":"kilabit.info" }
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.