Это то, что я хочу: у меня есть большой массив, называемый результатами. Каждый элемент в этом массиве я хочу добавить в свою итерационную функцию и сохранить ее в моем mongoDB (здесь также не указаны некоторые шаги, которые не важны). После того, как каждый из этих элементов был сохранен в базе данных (или отказался), я хочу, чтобы console.log отображал «Все сделано». К сожалению, все сделанные изображения отображаются почти сразу после вызова серии, а все остальное все еще обрабатывается. Как мне это сделать правильно?node.js async.eachSeries вызывает окончательный обратный вызов слишком рано
Я использую mongoose с моделью под названием «свет» и для удобства чтения. Я пропустил все сообщения об ошибках из кода. Я использую узел Асинхра для 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