结合async.each和async.series

时间:2015-09-15 11:08:50

标签: javascript asynchronous callback async.js

我想结合使用async.each和async.series,但我得到了意想不到的结果。

async.each([1, 2], function(item, nloop) {
    async.series([
        function(callback) {
            console.log("1");
            callback();
        },
        function(callback) {
            console.log("2");
            callback();
        },
        function(callback) {
            console.log("3");
            callback();
        },
        function(callback) {
            nloop();
        }
    ]);
},function(){

}); 

我希望此代码输出123123。 相反,我得到了112233。我做错了什么?

1 个答案:

答案 0 :(得分:2)

async.each() applies the function iterator to each item in array in parallel。 如果您想以连续方式进行,则应使用eachSeries()

此外,您应该使用async.series(taskArray, callback)中的最终回调:

async.eachSeries([1, 2], function(item, nextItem) {
    async.series([
        function(next) {
            console.log("1");
            next();
        },
        function(next) {
            console.log("2");
            next();
        },
        function(callback) {
            console.log("3");
            next();
        }
    ], nextItem);
},function(){

});