Sobes.tech
Junior — Middle

Jak lze sloučit několik dotazů do jednoho nebo zajistit jejich sekvenční provádění?

sobes.tech AI

Odpověď od AI

V Go lze pro sloučení několika požadavků do jednoho nebo zajištění jejich sekvenčního provádění použít několik přístupů:

  1. Sekvenční provádění: jednoduše zavolejte funkce požadavků po sobě, počkejte na dokončení každé před tím, než přejdete k další.
resp1, err := client.Do(req1)
if err != nil {
    // zpracování chyby
}
resp2, err := client.Do(req2)
// atd.
  1. Paralelní provádění s čekáním: spusťte požadavky v goroutines a použijte sync.WaitGroup k čekání na jejich dokončení.
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. Sloučení požadavků: pokud API to podporuje, lze sloučit více požadavků do jednoho (například dávkový požadavek), ale záleží na serveru.

Volba závisí na požadavcích: je potřeba sekvence nebo paralelismus, a podporuje server sloučení požadavků?