Я пытаюсь использовать предложение AngularJS/then с рекурсивной функцией. Но тогда функция не вызывается (ни один из вызовов error-, success-, notify-callback не вызван).AngularJS, обещание с рекурсивной функцией
Вот мой код:
рекурсивная функция
loadSection2 = function() {
var apiURL = "http://..."
var deferred = $q.defer();
$http({
method: "GET",
url: apiURL
}).success(function(result, status, headers, config) {
console.log(result);
loadCount++;
if(loadCount < 10) {
newSectionArray.push(result);
loadSection2();
} else {
loadCount = 0;
deferred.resolve();
return deferred.promise;
}
}).error(function() {
return deferred.reject();
});
deferred.notify();
return deferred.promise;
};
затем
loadSection2().then(function() {
console.log("NEW SECTIONS LOADED, start adding to document");
addContent();
}, function() {
console.log("ERROR CALLBACK");
}, function() {
console.log("NOTIFY CALLBACK");
}).then(function() {
loadScrollActive = false;
});
Я думаю, тогда должен получить первый уведомления обратного вызова по крайней мере. Но обратного вызова нет. Не работает ли с рекурсивной функцией?
Не могли бы вы дать нам jsfiddle? – Manishearth
Единственное, что я вижу, это то, что вы не можете вернуть что-то из функции обратного вызова. Таким образом, возврат отложенных.произведений в .success и .error фактически ничего не делает. Однако не причина проблемы. – Narretz
Где определяется 'loadCount'? И «уведомление» не работает, как вы думаете. У меня есть открытая проблема для этого в угловом репо -> https://github.com/angular/angular.js/issues/5277 – Rifat