Sobes.tech
Junior — Middle

Kuidas saab määrata, kes algatas praeguse konteksti tühistamise?

sobes.tech AI

Vastus AI-lt

Go keeles ei ole võimalik otseselt määrata, kes algatas praeguse konteksti tühistamise, kuna kontekst ei salvesta teavet tühistamise algataja kohta.

Kuid, seda saab teha:

  • Kasutades erinevaid kontekste erinevate tühistamise allikatega (näiteks, context.WithCancel, context.WithTimeout, context.WithDeadline), et mõista tühistamise põhjust vastavalt konteksti tüübile.
  • Edastades täiendavat teavet context.WithValue abil, et tuvastada algataja.

Näide tühistamise põhjuse kontrollimiseks:

select {
case <-ctx.Done():
    err := ctx.Err()
    if err == context.Canceled {
        fmt.Println("Käsitsi tühistamine")
    } else if err == context.DeadlineExceeded {
        fmt.Println("Aeg on möödunud")
    }
}

Täpselt algataja määramiseks tuleb rakendada oma mehhanism, mis edastab selle teabe.