Sobes.tech
Junior — Middle

Kaip nustatyti, ar dabartinio konteksto vykdymas buvo nutrauktas arba atšauktas?

sobes.tech AI

Atsakymas iš AI

Go kalba, norint nustatyti, ar dabartinio konteksto vykdymas buvo nutrauktas arba atšauktas, naudojama Done() metodo iš context.Context objekto. Šis metodas grąžina kanalą, kuris užsidaro, kai kontekstas atšaukiamas. Paprastai patikrinimas atliekamas taip:

select {
case <-ctx.Done():
    // Kontekstas atšauktas arba pasibaigė laiko limitas
    err := ctx.Err() // context.Canceled arba context.DeadlineExceeded
    // Atšaukimo apdorojimas
default:
    // Tęsti darbą
}

Jei ctx.Done() kanalas yra uždarytas, tai reiškia, kad vykdymą reikia nutraukti.