angular 自定义服务里的多个方法,依赖调用

.factory('user',['$http',function($http){
        return {
            getUser:function(){
                return $http({
                    method: 'GET',
                    url:baseApi + '/api/user',
                    cache:true
                })
            },
            getAddressList:function(){
                user.getUser().then(function(res){
                    var userId = res.data.id;
                    console.log(res)
                    return $http({
                        method: 'GET',
                        url:baseApi+'/api/user/address/getuseraddress',
                        params:{
                            user_id: userId
                        }
                    })
                })
            }
        }
    }])

上面代码中的getAddressList方法依赖getUser方法返回的数据,该怎么修改?

阅读 1.7k
1 个回答

一个比较快点的办法就是再注入promise($q), 我帮你改下代码

.factory('user',['$http', $q, function($http, $q){

    return {
        getUser:function(){
            return $http({
                method: 'GET',
                url:baseApi + '/api/user',
                cache:true
            })
        },
        getAddressList:function(){
            var deferred = $q.defer();
            user.getUser().then(function(res){
                var userId = res.data.id;
                console.log(res)
                $http({
                    method: 'GET',
                    url:baseApi+'/api/user/address/getuseraddress',
                    params:{
                        user_id: userId
                    }
                }).then(function (response) {
                    deferred.resolve(response);
                })
            });
            
            return deferred.promise;
        }
    }
}])

使用方法就是user.getAddressList().then(function(res){});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题