我有兩個功能,使網絡的請求:如何使2個併發網絡請求中Golang
如:
func request1() (resultTypeA, error) {
....
}
func request2() (requestTypeB, error) {
...
}
鑑於它們是兩個不同類型的,我不能只用一個通道。 什麼是並行到呼叫的最佳模式:
resultA, err := request1()
resultB, err := request2()
我有兩個功能,使網絡的請求:如何使2個併發網絡請求中Golang
如:
func request1() (resultTypeA, error) {
....
}
func request2() (requestTypeB, error) {
...
}
鑑於它們是兩個不同類型的,我不能只用一個通道。 什麼是並行到呼叫的最佳模式:
resultA, err := request1()
resultB, err := request2()
使用sync.WorkGroup
var wg sync.WorkGroup
wg.Add(2)
var resultA resultTypeA, errA error
go func() {
resultA, errA = request1()
wg.Done()
}()
var resultB resultTypeB, errB error
go func() {
resultB, errB = request2()
wg.Done()
}()
wg.Wait()
if errA != nil {
return errA
}
if errB != nil {
return errB
}
你能提供一個錯誤處理的例子嗎?例如如果它們中的任何一個返回錯誤,則終止 – samol
@samol您可以在'wg.Wait()'之後檢查'errA'和'errB',並在出錯時執行所需操作。 – user2172816
你可能只是創建兩個夠程,使他們並行。 –