Sobes.tech
Junior — Middle

Kako spojiti više upita u jedan ili osigurati njihovo redom izvršavanje?

sobes.tech АИ

Одговор од АИ

У Go, за комбовање више захтева у један или за обезбеђивање њиховог секвенцијалног извршавања, могу се користити различити приступи:

  1. Секвенцијално извршавање: једноставно позовите функције захтева једну за другом, чекајући да свака заврши пре него што пређете на следећу.
resp1, err := client.Do(req1)
if err != nil {
    // обрада грешке
}
resp2, err := client.Do(req2)
// итд.
  1. Паралелно извршавање са чекањем: покрените захтеве у 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()
  1. Обједињавање захтева: ако API то подржава, можете објединити више захтева у један (нпр., батч-захтев), али то зависи од сервера.

Дакле, избор зависи од захтева: да ли је потребна секвенца или паралелизам, и да ли сервер подржава обједињавање захтева?