AngularJS 承诺在 foreach 中获取数据
AngularJS promise get data in foreach
我承诺获取数据:
var activeUsersByZonePromise = function (zone) {
return $http.get(backendUri.buildAppUri('/active_users/total', {
'start_day': $scope.timeFilter.startDay(),
'zone': zone
})).then(function (data) {
return {
count: data.data.activeUsers.current,
sincePreviousTime: data.data.activeUsers.current - data.data.activeUsers.previous,
arrow: arrowImage(data.data.activeUsers.current, data.data.activeUsers.previous)
};
});
};
然后我注意构建一些数据模型,然后我使用 foreach 设置值并获取数据,如下所示:
getZonesPromise.then(function (result) {
var zones = [];
angular.forEach(result.qualityScore.zones, function (response) {
zones.push({
zone: response.zone,
qualityScore: response.qualityScore,
prevQualityScore: response.prevQualityScore
});
});
return zones;
}).then(function (zones) {
var data = [];
angular.forEach(zones, function (zone) {
data.push({
title: zone.zone,
activeUsers: activeUsersByZonePromise(zone.zone),
//...
$scope.zonesDataModel = data;
});
而 activeUsersByZonePromise(zone.zone) 无法获取数据,因为我使用 zonesDataModel 进行数据绑定,帮我解决这个问题。
getZonesPromise.then(function (result) {
var zones = [];
angular.forEach(result.qualityScore.zones, function (response) {
zones.push({
zone: response.zone,
qualityScore: response.qualityScore,
prevQualityScore: response.prevQualityScore
});
});
return zones;
}).then(function (zones) {
$scope.zonesDataModel = [];
angular.forEach(zones, function (zone) {
activeUsersByZonePromise(zone.zone).then(function(user) {
$scope.zonesDataModel.push({
title: zone.zone,
activeUsers: user,
//...
}
});
您将承诺 activeUsersByZonesPromise
结果分配给 activeUsers
。
这种方式似乎更好
我承诺获取数据:
var activeUsersByZonePromise = function (zone) {
return $http.get(backendUri.buildAppUri('/active_users/total', {
'start_day': $scope.timeFilter.startDay(),
'zone': zone
})).then(function (data) {
return {
count: data.data.activeUsers.current,
sincePreviousTime: data.data.activeUsers.current - data.data.activeUsers.previous,
arrow: arrowImage(data.data.activeUsers.current, data.data.activeUsers.previous)
};
});
};
然后我注意构建一些数据模型,然后我使用 foreach 设置值并获取数据,如下所示:
getZonesPromise.then(function (result) {
var zones = [];
angular.forEach(result.qualityScore.zones, function (response) {
zones.push({
zone: response.zone,
qualityScore: response.qualityScore,
prevQualityScore: response.prevQualityScore
});
});
return zones;
}).then(function (zones) {
var data = [];
angular.forEach(zones, function (zone) {
data.push({
title: zone.zone,
activeUsers: activeUsersByZonePromise(zone.zone),
//...
$scope.zonesDataModel = data;
});
而 activeUsersByZonePromise(zone.zone) 无法获取数据,因为我使用 zonesDataModel 进行数据绑定,帮我解决这个问题。
getZonesPromise.then(function (result) {
var zones = [];
angular.forEach(result.qualityScore.zones, function (response) {
zones.push({
zone: response.zone,
qualityScore: response.qualityScore,
prevQualityScore: response.prevQualityScore
});
});
return zones;
}).then(function (zones) {
$scope.zonesDataModel = [];
angular.forEach(zones, function (zone) {
activeUsersByZonePromise(zone.zone).then(function(user) {
$scope.zonesDataModel.push({
title: zone.zone,
activeUsers: user,
//...
}
});
您将承诺 activeUsersByZonesPromise
结果分配给 activeUsers
。
这种方式似乎更好