node js嵌套q.all

时间:2017-09-25 20:09:48

标签: javascript node.js promise q

我的代码存在小问题。这里有一些用于理解的伪代码:

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;
}

那你怎么能看到这段代码搞砸了。所有功能同时并行运行。在脚本执行后,它立即写入“结束”,然后执行所有“静音”的东西。我想要更多控制并摆脱“筑巢”。我该如何重写代码?也许有人建议改进它。

0 个答案:

没有答案