Crea promesa en AngularJS

Estoy tratando de crear una promesa en Angular con el servicio $ q. Devuelve un objeto recuperado de un servicio web. Si el objeto está en el caché, lo devuelve sin llamar al servicio web.

El problema es que los dos resuelve son llamados.

Tal vez, ¿Estoy usando una promesa anti-patrón?

Aquí está mi código:

function returnMapAsync() { return $q(function (resolve, reject) { if (navigationMap) { resolve(navigationMap); } else { ServerRequest.getNavigationMap().then(function (data) { navigationMap = data.object; resolve(navigationMap); }); } }); } 

Gracias

No debería tener que envolver todo en la llamada $q() . Para promisificar la navigationMap use $ q.when :

 function returnMapAsync() { if (navigationMap) { return $q.when(navigationMap); } return ServerRequest.getNavigationMap(); } 

No es necesario envolverlo en una promesa más, ya que ServerRequest.getNavigationMap() es una promesa:

 function returnMapAsync() { if (navigationMap) { return $q.resolve(navigationMap); } return ServerRequest.getNavigationMap().then(function(data) { navigationMap = data.object; return navigationMap; }); } 
    Intereting Posts