Maison  >  Article  >  interface Web  >  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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-22 18:58:03776parcourir

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() :

<code class="js">for (var i = 0; i < maxRetries; i++) {
  p = p.catch(attempt).catch(rejectDelay);
}</code>

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 :

<code class="js">for (var i = 0; i < maxRetries; i++) {
  p = p.catch(attempt).then(test);
}</code>

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() :

<code class="js">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;
}</code>

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 nouvelle tentative complexes, il est recommandé d'utiliser solutions récursives ou bibliothèques de nouvelles tentatives spécialement conçues.

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