Maison > Article > développement back-end > Comment vérifier de manière fiable l'annulation d'une demande dans Go ?
Comment vérifier l'annulation d'une demande
Dans Go, les programmeurs peuvent rencontrer des scénarios dans lesquels ils doivent déterminer si une demande a été annulée. Cependant, l'utilisation de la comparaison == context.Canceled dans Go 1.9 et versions antérieures peut donner des résultats inattendus.
Pour vérifier avec précision l'annulation de la demande, envisagez les approches suivantes :
1. Utilisez l'objet d'erreur context.Canceled :
Dans Go 1.13 et versions ultérieures, l'objet d'erreur context.Canceled fournit un moyen pratique de vérifier l'annulation. Lorsqu'un contexte est annulé, toute opération effectuée sur celui-ci renverra cette erreur. Le code suivant démontre son utilisation :
// Create a context that is already canceled ctx, cancel := context.WithCancel(context.Background()) cancel() // Create the request with it and perform an operation r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil) _, err := http.DefaultClient.Do(r) // Check if the error matches context.Canceled if err == context.Canceled { // Request was canceled }
2. Utilisez la fonction error.Is :
Si vous devez prendre en charge les versions Go antérieures à 1.13, vous pouvez utiliser la fonction error.Is pour vérifier les erreurs context.Canceled imbriquées. error.Is vous permet d'inspecter la chaîne d'erreurs sous-jacente et de déterminer si l'une des erreurs correspond à un type d'erreur spécifié.
// Create a context that is already canceled ctx, cancel := context.WithCancel(context.Background()) cancel() // Create the request with it and perform an operation r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil) _, err := http.DefaultClient.Do(r) // Check if the error chain contains context.Canceled if errors.Is(err, context.Canceled) { // Request was canceled }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!