¡Esta es una revisión vieja del documento!
Para acabar esta unidad vamos a seguir con el ejemplo del seguro médico y vamos a modificar el servicio remoteResource
para que ahora haga uso de las promesas y los controladores que lo usan para adecuarse al nuevo interfaz del servicio.
El cambio implica que en los métodos get
y list
ya no se pasan como parámetros las funciones de callback sino que ahora se retorna una promesa y desde los controladores se añaden a la promesa las funciones de callback.
Veamos como queda la función del servicio.
function RemoteResource($http,$q, baseUrl) { this.get = function() { var defered=$q.defer(); var promise=defered.promise; $http({ method: 'GET', url: baseUrl + '/datos.json' }).success(function(data, status, headers, config) { defered.resolve(data); }).error(function(data, status, headers, config) { defered.reject(status); }); return promise; } this.list = function() { var defered=$q.defer(); var promise=defered.promise; $http({ method: 'GET', url: baseUrl + '/listado_seguros.json' }).success(function(data, status, headers, config) { defered.resolve(data); }).error(function(data, status, headers, config) { defered.reject(status); }); return promise; } }
$q
.defered
status
ya que era lo único que se usaba.get
son el list
.Ahora veamos como se crea el provider
function RemoteResourceProvider() { var _baseUrl; this.setBaseUrl = function(baseUrl) { _baseUrl = baseUrl; } this.$get = ['$http','$q',function($http,$q) { return new RemoteResource($http,$q, _baseUrl); }]; }
$q
.$q
.
Ahora modificamos los controladores DetalleSeguroController
y ListadoSeguroController
para que hagan las llamdas al servicio usando las promesas.
remoteResource.get().then(function(seguro) { $scope.seguro = seguro; }, function(status) { alert("Ha fallado la petición. Estado HTTP:" + status); });
remoteResource.list().then(function(seguros) { $scope.seguros = seguros; }, function(status) { alert("Ha fallado la petición. Estado HTTP:" + status); });
El cambio en ambos controladores es solo en las llamadas a get
y list
para que hagan uso del método then
en vez de pasar directamente las funciones de callback al llamar a get
y list
.