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.