Это мой путь:Как обрабатывать данные, когда обещание в цикле?
var activeArr = [];
var activeDate = [];
var day = (endDate - startDate)/(24 * 60 * 60 * 1000);
for (var i = 1; i < day + 1; i++) {
activeDate.push(endDate - (24 * 60 * 60 * 1000) * i);
var start = endDate - (24 * 60 * 60 * 1000) * i;
var end = endDate - (24 * 60 * 60 * 1000) * (i - 1);
statisService.getRegStatis(start, end).then(function(data) {
activeArr.push(data);
if(activeArr.length == day){
var active = [];
for(var j=0;j<activeArr.length;j++){
var obj = {};
obj.date = activeDate[j];
obj.data = activeArr[j].data;
active.push(obj);
}
$scope.active = active;
}
});
}
служба:
userServiceModule.factory('statisService', ['$http', 'serverUrl', function($http, serverUrl) {
return {
getRegStatis: function(startDate, endDate) {
var url = serverUrl + "/adminDA/dbReport?startTime=" + startDate + "&endTime=" + endDate;
return $http.get(url).then(function(result) {
return result.data;
});
}
};
Я хочу поставить дату и данные в один объект, так что я могу использовать его в представлении, как это:
<tr ng-repeat="item in active track by $index">
Цикл for не будет ждать завершения всех вызовов службы. Поэтому я обрабатываю данные в цикле for, и я думаю, что это не очень хорошо, но я не знаю, как это сделать быть олучатель.
отредактировать свой ответ и добавил}, мы надеемся, в нужном месте. Не зная возвращаемого значения 'data' (это массив?) И не зная, возвращает ли функция statisService.getRegStatis promis, у нас не будет достаточно информации, чтобы дать вам хороший ответ. Я бы сомневался, что метод 'then' будет вызываться несколько раз, чтобы заполнить' activeArr'. Возможно, 'data' является массивом. то вы можете использовать его вместо 'activeArr' –
@PeterPaulKiefer спасибо, но вы его отредактировали неправильно. Я обновлю служебную функцию –
Теперь} снова отсутствует. Просто используйте 'return $ http.get (url)' без разрешения обещания с 'then (function (...'. Возвращаемое значение является promis. И используйте данные вместо массива activeArr. Я считаю, что данные - это массив, с сервера http call. –