async.map(map, function(item, mnext){
async.waterfall([
function(wnext){
console.log("1");
//mongodb queryies something like
db.collection.find().toArray(function(err){
if(err){
wnext(err);
}else{
wnext();
}
})
},
function(wnext){
console.log("2");
//mongodb queryies something like
db.collection.find().toArray(function(err){
if(err){
wnext(err);
}else{
wnext();
}
})
},
function(wnext){
console.log("3");
//mongodb queryies something like
db.collection.find().toArray(function(err){
if(err){
wnext(err);
}else{
wnext();
}
})
}
], function(err){
if(err){
mnext(err);
}else{
mnext();
}
})
})
我希望根据地图的数量看到1 2 3 1 2 3 1 2 3
。但情况并不像我预期的那样。我意识到它打印为1 2 1 2 3 3
或除1 2 3
之外的其他内容。我无法理解这是怎么发生的。因为它的瀑布和结构是真的我猜?那么我们可以说地图或瀑布存在问题吗?或者async.map是异步的,所以它会覆盖瀑布?
我不知道......而且我被困了。我错过了什么? Isn&#t; t 1 2 3
是预期的序列吗?
答案 0 :(得分:1)
如果您看到async.map
doc https://caolan.github.io/async/docs.html#map,
注意,因为此函数将iteratee应用于每个项目 并行,不能保证iteratee函数会 按顺序完成
是。 async.map
是平行的。要实现您的目标,请使用async.mapSeries
https://caolan.github.io/async/docs.html#mapSeries