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; }); });
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; }); });
Dans le service module :
app.factory('tokenService', function($http) { var getTokens = function() { return $http.get('/api/tokens'); }; return { getTokens: getTokens }; });
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 :
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!