Sobes.tech
Junior — Middle

Kokia yra metodo Context.Done vaidmuo valdant asinchroninių operacijų užbaigimą?

sobes.tech AI

Atsakymas iš AI

Context.Done() metodas grąžina kanalą, kuris uždaromas, kai kontekstas atšaukiamas arba pasibaigia jo galiojimo laikas. Tai leidžia asinchroninėms operacijoms aptikti pabaigos signalą ir tinkamai nutraukti veiklą.

Pavyzdžiui, gorutinoje galima stebėti šį kanalą ir užbaigti darbą, kai kontekstas atšaukiamas:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Kontekstas atšauktas, baigti
        return
    case data := <-dataCh:
        // Duomenų apdorojimas
    }
}()

// Vėliau kviečiame cancel(), kad sustabdytume gorutiną
cancel()

Taip Context.Done() veikia kaip signalas saugiam ir laiku užbaigtiems asinchroniniams veiksmams.