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:
// Маълумотларни қайта ишлаш
}
}()
// Кейинчалик, goroutine-ни тўхтатиш учун cancel() чақирилади
cancel()
Шу тариқа, Context.Done() хавфсиз ва вақтида асинхрон операцияларни якунлаш учун сигнал вазифасини бажаради.