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
Barbara Streisandoriginal
2024-11-14 14:40:02738parcourir

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');
};

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

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

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