javascript函数中嵌套的async.map

时间:2015-08-28 19:42:52

标签: javascript node.js mongodb asynchronous express

我在使用https://github.com/caolan/async库时遇到一个问题。我有一种情况,我使用asyc.auto和一个使用async.map的函数。现在在回调中我得到一个结果数组,在下一个函数中,我需要调用db update / insert查询。我可以在另一个async.map中使用async.map。

为清楚起见,请看一下:

async.auto({
    // other functions
    D: ['A', function(callback, results){
        var resultIds = results.A;
        async.map(resultIds, function(data, cb){
            // do some stuff
        }, function(err, result){
            console.log(err);
            if(err) {
                callback(err);
            }
            callback(null, result);
        }); 
    }],
    E: ['D', function(callback, results){
        var resultIds = results.D; // an array of result which contains ids: [1,2,4]
        async.map(resultIds, function(data, cb){
            // Can I use again a async.map here like this
            async.map(data[ids], function(d,cb){
                // do some stuff here
            }, function(err, result){});
        }, function(err, result){
            console.log(err);
            if(err) {
                callback(err);
            }
            callback(null, result);
        }); 
    }]
}, function(err, results){
    console.log(results);
    if(err) {
        cb(err);
    }
    cb(null, results);
});

有没有更好的方法来处理这种情况?我用mongo来更新/插入带有这些ID的新文档。

0 个答案:

没有答案