559120
因为nodeJs的运行机制的原因,我要在循环里面使用回调函数函数赋值,因为是循环,所以我不能把传值的回调直接在循环里面使用回调函数,只能使用 if 语句在循环里面判断是否循环结束,结束则调用传值的回调函数;而我如果把传值的回调写在循环外面,则传过去一个[]空数组,只是nodeJS的EVENT LOOP是这样。。有没有其他写法可以在完成赋值之后再使用传值的回调。。谢谢大神
var stats = function(collections, cb) {
for (coll in collections) {
var collection = db.collection(collections[coll].name);
collection.stats(function(err,stats){ //赋值的回调函数
if(err){
res.render('error', {
message: err.message,
error: err
});
}
collections_stats.push({//赋值语句
name : stats.ns,
size : stats.size,
count : stats.count,
indexsize : stats.totalIndexSize
});
});
//if(coll == collections.length -1){//判断循环是否完成
// cb(null,collections_stats);//使用回调函数把值传下去
//}
}
cb(null,collections_stats);//使用回调函数把值传下去
}
stats(collections_names,callback);