Maison  >  Article  >  interface Web  >  **Pouvez-vous annuler la chaîne dans les promesses JavaScript ?**

**Pouvez-vous annuler la chaîne dans les promesses JavaScript ?**

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 14:30:02779parcourir

**Can You Cancel the Chain in JavaScript Promises?**

Annulation d'une chaîne de promesses Vanilla ECMAScript 6

Problème

Est-il possible d'effacer les gestionnaires d'événements .thens pour une instance de promesse JavaScript ?

Contexte

Lorsqu'un test utilisant un framework particulier expire, la promesse de délai d'attente appelle assert.fail() pour marquer le test comme ayant échoué. Cependant, le test continue de s'exécuter car la promesse du test (résultat) est toujours en attente de résolution.

Solution souhaitée

Idéalement, les .thens restants sur la variable de résultat pourraient être effacés pour empêcher davantage exécution du test.

Réponse

Malheureusement, il n'existe pas de méthode intégrée dans ECMAScript 6 pour annuler les promesses ou leurs gestionnaires .thens. Le comité ES discute toujours des solutions potentielles qui pourraient être adoptées dans les futures versions d'ECMAScript.

Solutions de contournement possibles

En attendant qu'une solution officielle soit mise en œuvre, vous pouvez envisager les solutions de contournement suivantes :

  • Sous-classement : Créez votre propre sous-classe de Promise qui intègre une logique d'annulation.
  • Implémentations de Userland Promise : Explorez les implémentations tierces de Promise qui fournissent des fonctionnalités d'annulation, tels que promesse annulable ou promesse-annulation.

Notes supplémentaires

Dans le cas spécifique mentionné dans le problème, le problème avec le test qui ne se terminait pas était dû à une erreur non détectée dans la fonction de test. Pour résoudre ce problème, vous devez gérer les erreurs de manière appropriée dans la fonction de test.

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