Junior — Middle
Hogyan lehet több lekérdezést egyesíteni vagy biztosítani azok szekvenciális végrehajtását?
sobes.tech MI
Válasz az MI-től
Go-ban több kérés egyesítéséhez vagy azok szekvenciális végrehajtásának biztosításához több megközelítés is alkalmazható:
- Szekvenciális végrehajtás: egyszerűen hívja meg a kérésfüggvényeket egymás után, várva, hogy mindegyik befejeződjön, mielőtt a következőre lépne.
resp1, err := client.Do(req1)
if err != nil {
// hiba kezelése
}
resp2, err := client.Do(req2)
// stb.
- Párhuzamos végrehajtás várakozással: indítsa el a kérésket goroutine-okban, és használja a
sync.WaitGroup-ot a befejeződésük várására.
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()
- Kérések összefűzése: ha az API támogatja, több kérés összefűzhető egybe (pl. batch kérés), de ez a szervertől függ.
Így a választás a követelményektől függ: szükség van-e szekvenciára vagy párhuzamosságra, és a szerver támogatja-e a kérés összefűzést?