Maison >interface Web >js tutoriel >Devriez-vous utiliser les rappels avec les promesses d'AngularJS ?

Devriez-vous utiliser les rappels avec les promesses d'AngularJS ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-09 20:22:02849parcourir

Should You Use Callbacks with AngularJS Promises?

Inversion de rappel dans AngularJS : un anti-modèle

Dans AngularJS, il est courant de transmettre des fonctions de rappel aux services qui renvoient des promesses. Cependant, cette approche peut introduire un anti-modèle et entraver les avantages des promesses.

Exemple d'anti-modèle :

Considérez le code suivant, où le service getTokens accepte une fonction de rappel :

...
getTokens: function(callbackFn) {
  $http.get('/api/tokens').then (function onFulfilled(response) {
    callbackFn(response.data);
  });
}
...

Cette approche présente plusieurs inconvénients :

  • Inversion de contrôle : Les fonctions de rappel s'exécutent dans le contexte du service, inversant le flux de contrôle et rend difficile le suivi du code.
  • Chaînage de promesses non tenues :Les rappels empêchent les promesses d'être chaînées pour gérer plusieurs événements ou manipuler des données en séquence.
  • Complexité :La gestion explicite des rappels ajoute une complexité inutile à la base de code.

Refactoring pour les meilleures pratiques :

Pour résoudre cet anti-modèle, refactorisez le code comme suit :

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

Dans le module appelant, utilisez la promesse renvoyée pour gérer le résultat :

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

Avantages des meilleures pratiques :

L'adoption de cette bonne pratique offre plusieurs avantages :

  • Préserve le chaînage des promesses : Les promesses peuvent désormais être chaînées pour effectuer plusieurs opérations de manière séquentielle, améliorant ainsi la lisibilité et la maintenabilité du code.
  • Code simplifié : La suppression de la gestion explicite des rappels simplifie la base de code et élimine les erreurs potentielles.
  • Testabilité accrue : Les promesses fournissent une interface propre pour les tests opérations asynchrones, facilitant la vérification du comportement du code.

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