У меня есть функция, которая извлекает много данных на основе выбора пользователем флажков. Если пользователь выбирает «Все», функция использует прикованные обещания для извлечения выбранных данных на основе «id» каждого флажка. Он отлично работает в первый раз, когда пользователь выбирает «Все». Однако, если пользователь отменяет выбор «Все», то снова выбирает «Все», цепочка обещает больше не цепочки. Это идет к первому обещанию, а затем киоски. Если страница обновляется, то прикованные обещания будут работать снова. Код ниже - всего лишь фрагмент, чтобы представить «общую идею», потому что в нем много кода. Как-то кажется, что первоначальные обещания не очищены или что-то в этом роде, но я не могу понять этот вопрос, так как я не получаю никаких ошибок.AngularJS Chained Promises работает только один раз
Эта функция вызывается, когда пользователь нажимает кнопку «Выбрать все».
$scope.selectAll = function() {
$scope.print.sections = angular.copy($scope.sections);
};
Затем, когда пользователь нажимает кнопку «Печать выбранных», следующая функция называется:
$scope.printSections = function() {
var promise = null;
$scope.print.sections.sort(setOrder);
$scope.dataLoading = true;
var cntr = 0;
var sections = $scope.print.sections;
function next() {
if (cntr < sections.length) {
promise = getSectionData(sections[cntr++]);
promise.then(next);
}
}
next();
};
Функция «getSectionData» получает данные для каждого раздела его «ид». Это не весь код для этой функции, поскольку он очень длинный.
function getSectionData(section) {
var deferred;
deferred = $q.defer();
var id = section.QuestionSectionID;
switch (id) {
case 1:
deferred.resolve(myService.getfirstSection(id)
.success(function (data) {
$scope.firstSection = data;
}));
break;
case 2:
deferred.resolve(myService.getSecondSection(id)
.success(function (data) {
$scope.secondSection= data;
}));
break;
}
return deferred.promise;
}
Проблема во втором случае, функция «next()», которая связывает обещания, не работает. Любая помощь очень ценится!