返回承诺或缓存数据的工厂用户服务?

时间:2013-07-16 20:25:42

标签: angularjs

我在AngualrJS中有一个用户服务,它当前返回一个承诺:

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

我想添加返回缓存用户的功能,但不要认为我可以这样做,因为一个人返回一个promise而另一个返回实际数据:

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

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

谢谢!

1 个答案:

答案 0 :(得分: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;
        },