I have small problem with my code. Here some pseudo code for understanding:
var array = ["some", "array", "with", "five", "elements"];
Q.all(array.map(async_f1)).then(function(){
console.log("end");
});
function async_f1(item){
var deferred = Q.defer();
// there i'm getting some data from db for each item in array
var new_array = [array of 100 elements that related to item];
Q.all(new_array.map(async_f2)).then(function(){
deferred.resolve();
});
return deferred.promise;
}
function async_f2(item){
var deferred = Q.defer();
// some operations with item
if(something == true){
deferred.resolve();
}
return deferred.promise;
}
So how can you see this code is messed up. All functions run in parallel in the same time. After script execution it immediately writes "end" and then executing all the stuff "silent". I want more control and get rid of "nesting". How can I rewrite my code ? Maybe some advises for improving it.