Maison > interface Web > js tutoriel > Pourquoi l'utilisation de rappels dans les méthodes Promise `.then` est-elle un anti-modèle ?

Pourquoi l'utilisation de rappels dans les méthodes Promise `.then` est-elle un anti-modèle ?

Barbara Streisand
Libérer: 2024-11-14 14:40:02
original
795 Les gens l'ont consulté

Why is Using Callbacks in Promise `.then` Methods an Anti-Pattern?

Utilisation des rappels dans les méthodes Promise .then : un anti-modèle

La pratique consistant à fournir une fonction de rappel à un service AngularJS, comme on le voit dans l'extrait de code que vous avez fourni peut sembler pratique, mais il suit un anti-modèle. Cette approche perturbe le flux de programmation asynchrone et l'inversion de contrôle prévues par Promises.

Pourquoi s'agit-il d'un anti-modèle ?

  • Chaînage d'interruptions : Les méthodes Promise .then vous permettent d'enchaîner plusieurs opérations asynchrones. En utilisant un rappel, vous perdez la possibilité de continuer facilement à traiter le résultat d'une opération dans une opération suivante.
  • Inversion de contrôle : Le code d'origine inverse le contrôle d'exécution en passant le rappel du module consommateur vers le module fournisseur. Cela rend plus difficile la gestion et le débogage du flux d'exécution.
  • Complexité inutile des promesses : Les promesses fournissent un mécanisme de gestion des opérations asynchrones. En enveloppant les promesses dans des rappels, vous introduisez une complexité inutile et obscurcissez l'intention du code.

Solution de refactorisation :

Pour refactoriser le code et éliminer ces problèmes , vous pouvez utiliser une simple méthode .then sans fonction de rappel :

var getTokens = function() {
  return $http.get('/api/tokens');
};
Copier après la connexion

Dans le module consommateur, vous pouvez ensuite utiliser directement .then pour enchaîner les opérations :

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });
Copier après la connexion

Avantages du code refactorisé :

  • Maintient le chaînage : En renvoyant une promesse à partir de la fonction getTokens, vous pouvez facilement enchaîner les opérations ultérieures.
  • Préserve le contrôle : Le module consommateur contrôle l'exécution des opérations asynchrones sans compter sur les rappels.
  • Simplifie le code : Le code refactorisé simplifie le processus de gestion asynchrone, le rendant plus facile à comprendre et à entretenir.

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 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