Sobes.tech
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ó:

  1. 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.
  1. 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()
  1. 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?