¡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.deferedstatus 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.