這就是我想要的:我有一個稱爲結果的大型數組。該數組中的每一項我都想放在我的迭代函數中,並將它保存到我的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