angular.js 两个异步请求嵌套,如何拿到最终的res.data?

请问我在service定义有两个异步请求,其中第二个中嵌套了第一个:

self.getPosionCode = function (params) {
            var d = $q.defer();
            $http({
                url: 'http://10.102.12.120:30001/background-manage/porder/searchPOIsByLocation?location=' + params.data.location.lng + ',' + params.data.location.lat,
                method: 'GET'
            }).then(function (res) {
                d.resolve(res.data)
            },function (err) {
                d.reject(err);
                console.log(err)
            })
        };
self.getPosionLan = function (params) {
    var d = $q.defer();
    $http({
        url: 'http://10.102.12.120:30001/background-manage/geocoding/address',
        method: 'POST',
        data:params
    }).then(function (res) {
        d.resolve(res.data);
        self.getPosionCode(res.data);
    },function (err) {
        d.reject(err)
    });
    return d.promise;
}

,那么我在controller里这样获取:

self.getPositon = function (data) {
    orderMsgServeice.getPosionLan(data).then(function (res) {
        console.log(res.data)
        /*$scope.position = res.data.[0];*/
    });
};

获取的却是第一次请求返回的数据,那么我该如何获得第二次请求返回的数据,也就是最终的数据呢?

阅读 3.1k
1 个回答
self.getPosionLan = function (params) {
    var d = $q.defer();
    $http({
        url: 'http://10.102.12.120:30001/background-manage/geocoding/address',
        method: 'POST',
        data:params
    }).then(function (res) {
        d.resolve(self.getPosionCode(res.data));
    },function (err) {
        d.reject(err)
    });
    return d.promise;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题