Maison > interface Web > js tutoriel > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-22 18:58:03
original
848 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal