Maison > interface Web > js tutoriel > Pourquoi les rappels sont-ils préjudiciables dans les chaînes de promesses AngularJS ?

Pourquoi les rappels sont-ils préjudiciables dans les chaînes de promesses AngularJS ?

Patricia Arquette
Libérer: 2024-11-13 05:08:02
original
381 Les gens l'ont consulté

Why are Callbacks Detrimental in AngularJS Promise Chains?

Pourquoi utiliser les rappels dans les chaînes de promesses AngularJS est préjudiciable

Il est souvent suggéré de fournir une fonction de rappel aux services AngularJS, comme le montre le extrait de code ci-dessous :

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens(function callbackFn(tokens) {
        $scope.tokens = tokens;
    });
});
Copier après la connexion

Cependant, cette pratique est déconseillée car Anti-modèle. Les services AngularJS comme $http renvoient des promesses, et attacher des méthodes de rappel à leurs méthodes .then constitue une inversion de contrôle indésirable.

Refactoring

Pour corriger ce problème, modifiez le codez comme suit :

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens()
        .then(function(response) {
            $scope.tokens = response.data;
        });
});
Copier après la connexion

Dans le service module :

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

    return {
        getTokens: getTokens
    };
});
Copier après la connexion

Cette refactorisation élimine la fonction de rappel et maintient le flux de contrôle souhaité via la méthode .then.

Justification de la refactorisation

Rappels tels qu'implémentés dans le code d'origine :

  • Empêcher un enchaînement ultérieur des succès/erreurs gestionnaires.
  • Déplacez le contrôle sur la gestion des réponses du module appelant vers le module appelé.
  • Présentez la complexité des promesses tout en les employant simultanément comme rappels. Ce paradoxe rend le code confus.

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!

source:php.cn
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