2013-07-16 53 views
1

我在AngualrJS用户服务,目前返回一个承诺:返回承诺或缓存数据的工厂用户服务?

 getData: function() { 
      return Restangular.one('users', id).get({single: true}); 
     }, 

我要添加到返回缓存用户的能力,但不认为我可以做到这一点作为一个返回一个承诺和其他返回实际数据:

 getData: function() { 
      if !data 
      return Restangular.one('users', id).get({single: true}); 
      else 
      return data 
     }, 

处理这个问题的最佳方法是什么?

谢谢!

回答

5

您应修改如下代码总是返回一个承诺

getData: function() { 
      var deferred = $q.defer() 
      if !data 
      Restangular.one('users', id).get({single: true}).then(function(data){ 
       deferred.resolve(data); 
      }); 
      else 
      deferred.resolve(data); 
      return deferred.promise; 
     },