Junior — Middle
Cum se poate gestiona timpul de așteptare pentru confirmarea codului în timpul autentificării?
sobes.tech AI
Răspuns de la AI
În Go, gestionarea timpului de așteptare pentru confirmarea codului în timpul autentificării se implementează de obicei folosind contexte (context.Context) sau temporizatoare (time.Timer, time.After). De exemplu, puteți crea un context cu un timeout care va anula operațiunea dacă confirmarea nu sosește la timp:
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
// Începem așteptarea confirmării într-o goroutine separată
select {
case <-confirmationChan:
// Cod confirmat
case <-ctx.Done():
// Timeout expirat, tratarea erorii
}
De asemenea, puteți folosi time.After pentru un timeout simplu:
select {
case <-confirmationChan:
// Cod confirmat
case <-time.After(30 * time.Second):
// Timeout
}
Astfel, timeout-urile permit controlul asupra timpului maxim de așteptare pentru confirmarea codului și gestionarea corectă a situațiilor în care utilizatorul nu introduce codul la timp.