2013-07-16 49 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; 
     },