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ů:
- 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.
- Paralelní provádění s čekáním: spusťte požadavky v goroutines a použijte
sync.WaitGroupk č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()
- 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ů?