Sobes.tech
Junior — Middle

Каква е ролята на метода Context.Done в управлението на завършването на асинхронни операции?

sobes.tech AI

Отговор от AI

Методът Context.Done() връща канал, който се затваря, когато контекстът бъде отменен или изтече времето му. Това позволява на асинхронните операции да засекат сигнала за завършване и да се прекъснат правилно.

Например, в горутина може да слушате този канал и да завършите работата при отменяне на контекста:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // Контекстът е отменен, завършване
        return
    case data := <-dataCh:
        // Обработка на данни
    }
}()

// По-късно извикваме cancel(), за да спрем горутината
cancel()

По този начин, Context.Done() служи като сигнал за безопасно и навременно приключване на асинхронните операции.