我如何在函数外获得响应,在函数内得到响应

时间:2018-08-16 06:14:20

标签: angularjs

在控制台中获取未定义的消息。我如何获得快速响应以及如何使用回调函数。

服务-----

.factory('getUserInfo', function ($http) {
    return {
        init: function () {
            return $http.get(base_url + 'User/getUserInfo', {
            }).then(function (response) {
                return response.data.data;
            });

        },
    };
});

财务主管-----

$scope.getUserInfo = function () {
            getUserInfo.init().then(function (response) {
                $scope.USER_UAD_response = response;
                $scope.USER_UAD_SYS_ID = response.USER_UAD_SYS_ID;
                //$scope.getPrice();
            });
        };
        $scope.getUserInfo();
    console.log($scope.USER_UAD_response);

1 个答案:

答案 0 :(得分:0)

您正在进行异步调用,因此需要将console.log移至.then函数中。其原因是console.log是在$scope.getUserInfo();之后执行的下一条语句。在从HTTP服务控制台获取响应之前,日志将被执行,并且您将获得undefined作为输出。

直接从工厂服务返回承诺,并将服务调用后要执行的代码移至.then方法中。

服务-----

.factory('getUserInfo', function ($http) {
    return {
        init: function () {
            return $http.get(base_url + 'User/getUserInfo');    
        }
    };
});

控制器-----

$scope.getUserInfo = function () {
            getUserInfo.init().then(function (response) {
                $scope.USER_UAD_response = response;
                $scope.USER_UAD_SYS_ID = response.USER_UAD_SYS_ID;
                //$scope.getPrice();
                console.log($scope.USER_UAD_response);

            });
        };
        $scope.getUserInfo();