我有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个“未定义”值的数组 例如[未定义,未定义,未定义]
我在这里做错了什么。有什么建议吗?
谢谢。
答案 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,但是作用域中的函数未返回任何东西。