"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quels sont les différents modèles de tentatives pour les opérations basées sur des promesses en JavaScript ?

Quels sont les différents modèles de tentatives pour les opérations basées sur des promesses en JavaScript ?

Publié le 2024-11-10
Parcourir:841

What are the Different Retry Patterns for Promise-Based Operations in JavaScript?

Modèles de nouvelle tentative pour les opérations basées sur des promesses

Les promesses offrent un moyen pratique de gérer les opérations asynchrones en JavaScript. Cependant, il est parfois nécessaire de réessayer les opérations plusieurs fois ou jusqu'à ce qu'une condition spécifique soit remplie.

1. Réessayer jusqu'à ce que la promesse soit résolue

Pour réessayer continuellement une opération jusqu'à ce qu'elle soit résolue, utilisez un délai entre les tentatives et un nombre maximum de tentatives. Ceci peut être réalisé en utilisant une boucle for et un chaînage .catch() :

for (var i = 0; i 

2. Réessayer jusqu'à ce que la condition soit remplie

Pour réessayer une opération jusqu'à ce qu'une condition soit remplie sur le résultat, utilisez une chaîne .then() pour vérifier la condition et une chaîne .catch() pour gérer les échecs :

for (var i = 0; i 

3. Modèle de nouvelle tentative dynamique économe en mémoire

Pour un mécanisme de nouvelle tentative dynamique avec des tentatives illimitées et un délai spécifié, utilisez l'approche en chaîne .catch() :

var p = Promise.reject();
while (true) {
  p = p.catch(attempt).catch(rejectDelay);
  // Break out of the loop if the condition is met.
  if (conditionMet) break;
}

Remarque :

  • L'approche en chaîne .catch() pour les tentatives présente des limites concernant le nombre maximum de tentatives et la consommation de mémoire.
  • Pour les scénarios de nouvelles tentatives complexes, il est recommandé d'utiliser des solutions récursives ou des bibliothèques de nouvelles tentatives spécialement conçues.
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729587495. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3