Tôi đang cố gắng sử dụng lời hứa AngularJS/sau đó với chức năng đệ quy. Nhưng chức năng sau đó không được gọi (không có lỗi nào, thành công, thông báo gọi lại được gọi).AngularJS, hứa với chức năng đệ quy
Đây là mã của tôi:
đệ quy chức năng
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;
};
sau đó
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;
});
Tôi nghĩ, sau đó có để có được là người đầu tiên thông báo-callback ít nhất. Nhưng không có gọi lại. Sau đó, không hoạt động với chức năng đệ quy?
Bạn có thể cho chúng tôi jsfiddle không? – Manishearth
Một điều tôi thấy là bạn không thể trả lại một cái gì đó từ một chức năng gọi lại. Vì vậy, trả về deferred.promise trong .success và .error thực sự không làm gì cả. Không phải nguyên nhân của vấn đề. – Narretz
Xác định 'loadCount' ở đâu? Và 'thông báo 'không hoạt động như bạn nghĩ. Tôi có một vấn đề mở cho rằng trong repo góc -> https://github.com/angular/angular.js/issues/5277 – Rifat