On m'a enseigné que nous utilisons des usines/services pour éliminer le codage en double. Voici une partie du code qui fonctionne bien.Pourquoi utilisons-nous Factories/Services pour les appels ajax dans Angularjs?
app.controller('ServicesCtrl',['$scope','DataFactory',function($scope,$http,DataFactory){
DataFactory.GetData('services1.json')
.then(function(response){
$scope.returnedData = response.data;
})
.catch(function(response){
console.log('Error in process',response.status,response.data);
});
}]);
app.controller('ContactCtrl',['$scope','DataFactory', function($scope,DataFactory){
DataFactory.GetData('location.json')
.then(function(response){
$scope.returnedData = response.data;
})
.catch(function(response){
console.log('Error in process',response.status,response.data);
});
}]);
app.factory('DataFactory',['$http',function($http){
var factory = {};
factory.GetData = function(path) {
return $http.get(path);
}
return factory;
}]);
Ma question est 1. Pourquoi utiliser les services/usines pour faire de tels appels ajax quand nous devons travailler sur les promesses à l'intérieur des contrôleurs? Je veux dire, je dois faire les mêmes appels .then et .catch dans les deux contrôleurs ici. Où est l'efficacité? Y a-t-il une meilleure façon de faire cela? Ou est-ce que je fais cela mal? Est-il possible de travailler sur ces promesses dans les usines et de renvoyer la réponse aux différents contrôleurs?
Il est possible cache les promesses des services. Sinon, JavaScript est un thread unique. Les fonctions ne peuvent renvoyer que les données immédiatement disponibles ou renvoyer une promesse * en attente * résolue satisfaite ou rejetée à une date ultérieure. – georgeawg