我的代码存在小问题。这里有一些用于理解的伪代码:
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;
}
那你怎么能看到这段代码搞砸了。所有功能同时并行运行。在脚本执行后,它立即写入“结束”,然后执行所有“静音”的东西。我想要更多控制并摆脱“筑巢”。我该如何重写代码?也许有人建议改进它。