Maison >interface Web >js tutoriel >Pourquoi les rappels dans les méthodes Promise .then sont-ils un anti-modèle dans AngularJS ?

Pourquoi les rappels dans les méthodes Promise .then sont-ils un anti-modèle dans AngularJS ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 07:41:03838parcourir

Why are Callbacks in Promise .then Methods an Anti-Pattern in AngularJS?

Pourquoi les rappels de Promise. Alors les méthodes sont un anti-modèle

Question :

Est-ce un anti-modèle fournir des fonctions de rappel aux services AngularJS dans les méthodes promise .then ? Si oui, comment le code doit-il être refactorisé et pourquoi ?

Réponse :

Refactoriser le code :

Modifiez la méthode getTokens dans tokenService pour renvoyer la promesse directement au lieu d'accepter un rappel :

var getTokens = function() {
  return $http.get('/api/tokens');
};

Dans le contrôleur, utilisez la méthode .then pour enchaîner les gestionnaires de réussite/échec :

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });

Pourquoi la méthode originale était un anti-modèle :

  • Empêche le chaînage ultérieur des gestionnaires de promesses. Le code d'origine empêche le chaînage de méthodes .then supplémentaires pour traitement ultérieur de la réponse.
  • Inverse le contrôle. En acceptant un rappel, le contrôle du traitement de la réponse est déplacé du module appelant vers le module appelé, ce qui n'est pas idéal.
  • Utilisation inutile des promesses. Tandis que le service $http renvoie des promesses, le code d'origine les reconvertit en rappels, rendant l'utilisation des promesses redondante.
  • Potentiel de confusion. L'utilisation de promesses comme rappels introduit un concept inutile dans la base de code et peut être difficile à comprendre pour les membres de l'équipe.

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