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() служи като сигнал за безопасно и навременно приключване на асинхронните операции.