这是我到目前为止所拥有的:package mainimport ( "encoding/json" "fmt" "io/ioutil" "log" "net/http")func subscribe(urls Urls) []byte { req, err := http.NewRequest("GET", urls.Url, nil) if err != nil { log.Fatal(err) } req.Header.Set("authentication", "Bearer " + urls.Token) http_client := &http.Client{} res, err := http_client.Do(req) if err != nil { log.Fatal(err) } defer res.Body.Close() resourceResp, err := ioutil.ReadAll(res.Body) if err != nil { log.Fatal(err) } fmt.Println(string(resourceResp)) var data map[string]interface{} error := json.Unmarshal([]byte(resourceResp), &data) if error != nil { log.Fatal(error) } return subscribe(urls)}type Urls struct { Url string Token string}func main() { var urls [2]Urls urls[0] = Urls{ Url: "https://example.com/users/8", Token: "abcdefg", } urls[1] = Urls{ Url: "https://example.com/users/9", Token: "hijklmnop", } subscribe(urls[0]) subscribe(urls[1])}最终目标是“订阅”多个 url 并提取任何更新的数据(最终将其添加到队列中,但一次一步)。之后,重新建立连接。现在,只有第一个订阅运行。谢谢!
1 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
我认为您要求的是subscribe并行运行这些功能。一种方法是将它们包装在goroutine中并等待所有goroutine完成:
func main() {
...
...
var wg sync.WaitGroup
wg.Add(len(urls))
for _, url := range(urls) {
go func() {
defer wg.Done()
subscribe(url)
}()
}
wg.Wait()
}
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消