Deferred promise is a great way to handle async calls synchronously. When we use recursive function, we may wonder how to handle the defer variable. It is as simple as:
some_function = function(some_var1, some_var2, def) {
var deferred = def || $q.defer(); // Use def when it is recursive call
...
...
$http({
url: url,
method: "POST",
...
}).success(function(result) {
deferred.resolve(result);
}).error(function(result, status) {
...
some_function(some_var1, some_var2, deferred);
...
...
deferred.reject(result);
});
...
return deferred.promise;
};
Bold texts are those that needs to be added to handle deferred promise in recursive calls.
Continue reading “AngularJS: Recursive function with deferred promise” →