这就是我想要的:我有一个称为结果的大型数组。该数组中的每一项我都想放在我的迭代函数中,并将它保存到我的mongoDB中(我省略了一些步骤以及哪些不重要)。在这些项目中的每一个都被保存到数据库(或拒绝)后,我想console.log显示“全部完成”。不幸的是,在调用系列后几乎立即显示所有完成,而其他所有内容仍在处理中。我该如何做到这一点?node.js async.eachSeries调用最终回调太早
我正在使用名为'light'的模型使用猫鼬,为了便于阅读,我省略了代码中的所有err消息。我使用节点异步的eachSeries部分
var async = require('async');
var results = [very big array]
var iteration = function(row,callbackDone) {
light.find({data: row.data}, function (err,entry) {
if(entry.length) {
callbackDone();
return console.log(entry + ' already exists');
}
var newEntry = new light(row);
newEntry.save(function (err,doc) {
console.log(entry + ' saved');
callbackDone();
});
});
};
async.eachSeries(results,iteration, function (err) {
console.log('All done');
});
尝试添加一些错误记录器('如果(ERR)的console.log(ERR);')。 – maxdec
为了便于阅读,我删除了错误记录器。对不起,如果我不清楚。该阵列容易拥有超过100个条目,猫鼬操作完美无瑕,但是在console.log('全部完成')已被显示之后保存全部发生。我需要的是一种在我的数组中的所有项目都已经处理完毕后显示'全部完成'的方法 – elmalto