Sobes.tech
Junior — Middle

Hoe kan worden vastgesteld wie de annulering van de huidige context heeft geïnitieerd?

sobes.tech AI

Antwoord van AI

In Go is het niet mogelijk om direct te bepalen wie de huidige context heeft geannuleerd, omdat de context geen informatie opslaat over de initiator van de annulering.

Echter, je kunt:

  • Verschillende contexten gebruiken met verschillende annuleringsbronnen (bijvoorbeeld, context.WithCancel, context.WithTimeout, context.WithDeadline) om de oorzaak van de annulering te begrijpen op basis van het type context.
  • Extra informatie doorgeven via de context met context.WithValue, om de initiator te identificeren.

Voorbeeld van het controleren van de oorzaak van de annulering:

select {
case <-ctx.Done():
    err := ctx.Err()
    if err == context.Canceled {
        fmt.Println("Handmatige annulering")
    } else if err == context.DeadlineExceeded {
        fmt.Println("Tijdslimiet overschreden")
    }
}

Om precies te bepalen wie de annulering heeft gestart, moet je een eigen mechanisme implementeren om deze informatie over te dragen.