Sobes.tech
Junior — Middle

Kirjeldage olukorda, kus kontekstide kasutamine oleks õigustatud ja tõhus.

sobes.tech AI

Vastus AI-lt

Go keeles kontekstid (context.Context) kasutatakse operatsioonide eluea haldamiseks, eriti asünkroonsete või võrgupõhiste kõnede puhul. Näiteks, kui teil on HTTP-server, mis töötleb päringuid ja soovite tühistada töötlemise, kui klient katkestab ühenduse või kui ootamise aeg ületab limiidi, siis konteksti kasutamine on sobiv.

Näide:

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
    select {
    case <-time.After(5 * time.Second):
        fmt.Fprintln(w, "Töötlus lõpetatud")
    case <-ctx.Done():
        err := ctx.Err()
        fmt.Println("Päring tühistati või aeg lõppes:", err)
    }
}

Siin võimaldab kontekst tühistada pikaajalise operatsiooni, kui klient katkestab ühenduse või aeg lõpeb, mis säästab ressursse ja parandab rakenduse reageerimisvõimet.