Junior — Middle
Kako spojiti više upita u jedan ili osigurati njihovo redom izvršavanje?
sobes.tech АИ
Одговор од АИ
У Go, за комбовање више захтева у један или за обезбеђивање њиховог секвенцијалног извршавања, могу се користити различити приступи:
- Секвенцијално извршавање: једноставно позовите функције захтева једну за другом, чекајући да свака заврши пре него што пређете на следећу.
resp1, err := client.Do(req1)
if err != nil {
// обрада грешке
}
resp2, err := client.Do(req2)
// итд.
- Паралелно извршавање са чекањем: покрените захтеве у goroutine-има и користите
sync.WaitGroupда бисте чекали њихов завршетак.
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
client.Do(req1)
}()
go func() {
defer wg.Done()
client.Do(req2)
}()
wg.Wait()
- Обједињавање захтева: ако API то подржава, можете објединити више захтева у један (нпр., батч-захтев), али то зависи од сервера.
Дакле, избор зависи од захтева: да ли је потребна секвенца или паралелизам, и да ли сервер подржава обједињавање захтева?