$ q.all()返回未定义值的数组

时间:2018-08-17 09:08:04

标签: angularjs

我有3个从后端请求数据的函数。以下是controller.js文件中的代码

$scope.getList1 = = function () {
    service.getList1(constants.getUrl1).then(
        function success(data) { 
            $scope.list1 = data.data.list1;               

            return data;

        }, function error() { 

        });
};

$scope.getList2 = = function () {
    service.getList2(constants.getUrl2).then(
        function success(data) { 
            $scope.list2 = data.data.list2;               

            return data;

        }, function error() { 

        });
};

$scope.getList3 = = function () {
    service.getList3(constants.getUrl3).then(
        function success(data) { 
            $scope.list3 = data.data.list3;               

            return data;

        }, function error() { 

        });
};

在我的service.js文件中,我有$ http请求,以从服务器获取数据。以下是我在service.js中的代码

this.getList1 = function (getUrl1) {
    return $http({
        method: 'GET',
        url: getUrl1
    });
};

this.getList2 = function (getUrl2) {
    return $http({
        method: 'GET',
        url: getUrl2
    });
};

this.getList3 = function (getUrl3) {
    return $http({
        method: 'GET',
        url: getUrl3
    });
};

然后我在一个像下面这样调用的单独函数中

$scope.initialise = function () {

    var requestArray = [$scope.getList1(), $scope.getList2(), $scope.getList3()];

    $q.all(requestArray).then(function (response) { 
        console.log(response);

        //other logic after successful completion of all 3 requests
    });
};

但是在响应中,我得到了3个“未定义”值的数组 例如[未定义,未定义,未定义]

我在这里做错了什么。有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

在$ scope的函数中添加return语句。

$scope.getList1 = = function () {
    /** here-> */ return service.getList1(constants.getUrl1).then(
        function success(data) { 
            $scope.list1 = data.data.list1;               

            return data;

        }, function error() { 

        });
};

以此类推。

问题是服务中的函数正在返回promise,但是作用域中的函数未返回任何东西。