Back to questions
Junior — Middle
80
Какова роль метода Context.Done в управлении завершением асинхронных операций?
Answer from AI
sobes.tech AI
Метод Context.Done() возвращает канал, который закрывается, когда контекст отменяется или истекает время его действия. Это позволяет асинхронным операциям отслеживать сигнал завершения и корректно прерываться.
Например, в горутине можно слушать этот канал и завершать работу при отмене контекста:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Контекст отменён, завершаем работу
return
case data := <-dataCh:
// Обработка данных
}
}()
// Позже вызываем cancel(), чтобы остановить горутину
cancel()
Таким образом, Context.Done() служит сигналом для безопасного и своевременного завершения асинхронных операций.