Maison  >  Article  >  développement back-end  >  Context.Background() vs Context.TODO() : quand devez-vous utiliser lequel ?

Context.Background() vs Context.TODO() : quand devez-vous utiliser lequel ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 18:18:03390parcourir

Context.Background() vs Context.TODO(): When Should You Use Which?

Background() vs TODO() : quel contexte devez-vous utiliser ?

Lors de la migration du code d'un package de signes global vers le pilote go mongo, comprendre le l'utilisation de context.TODO() et context.Background() est cruciale.

Background()

Selon la documentation, context.Background() renvoie un non -nil, vide Contexte avec les caractéristiques suivantes :

  • Jamais annulé
  • Aucune valeur
  • Aucune date limite

Il est couramment utilisé dans la fonction principale, l'initialisation et les tests. Lorsqu'aucun contexte significatif n'est disponible, context.Background() fournit une solution de secours.

TODO()

context.TODO() renvoie également un résultat vide et non nul. Contexte. Cependant, son utilisation prévue est spécifiquement lorsqu'il n'est pas clair quel contexte utiliser ou lorsqu'un contexte n'est pas encore disponible. En utilisant context.TODO(), vous pouvez explicitement documenter que vous avez besoin d'un contexte mais que vous n'en avez pas actuellement de spécifique.

Bonnes pratiques

  • Préférez utiliser le contexte associé à votre requête HTTP ou à d'autres scénarios spécifiques à l'application.
  • Utilisez context.TODO() dans les situations où aucun contexte clair n'est disponible mais où vous devez quand même indiquer qu'un contexte est requis.
  • Évitez d'utiliser context.Background() en dehors des fonctions principales, d'initialisation ou de test.

Exemple d'utilisation

Considérez le scénario suivant où un gestionnaire HTTP doit exécuter une requête MongoDB dans un délai spécifique :

ctx, cancel := context.WithTimeout(r.Context(), 6 * time.Second)
defer cancel()

// ctx automatically times out after 6 seconds
curs, err := c.Find(ctx, bson.M{"some": "filter"})

Dans cet exemple, context.WithTimeout() crée un nouveau contexte qui dérive du contexte de la requête (r.Context()) . Si l'opération MongoDB dépasse 6 secondes, le contexte expire, signalant que la requête doit être annulée.

Conclusion

Choisir entre context.TODO() et context. Background() consiste à comprendre les scénarios d'utilisation spécifiques et à s'assurer que vous fournissez un contexte significatif et approprié aux fonctions en aval.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn