Я пытаюсь объединить данные из двух файлов JSON (список клиентов), а затем создать столько задач, сколько клиентов будет выполнено позже, с помощью async.js
Чтобы заполнить весь массив задач, я контролирую завершение forEach с обещанием:
var parsePromise = new Promise(function (resolve, reject) {
mongoDB.MongoClient.connect(dbURL, (error, db) => {
originalData.forEach(function (element, index) {
var restoredCustomer = Object.assign(element, backupData[index]);
tasksArray.push((function (db, element) {
return function () {
db.collection('customers').insert(element, function (error) {
if (error) {
console.error("Error: ", error);
}
})
}
})(db, restoredCustomer));
forEachCounter--;
if (forEachCounter === 0) {
resolve(tasksArray);
}
});
});
});
Затем, когда обещание заканчивается, я выполняю async.js parallel
method:
parsePromise.then(function (tasksArray) {
async.parallel(tasksArray, (err, results) => {
console.log("Operation completed successfully: ", results);
})
})
Странная вещь в том, что код работает нормально, а вставки выполняются в MongoDB, однако console.log("Operation completed successfully: ", results);
, помещенный в обратный вызов parallel
, никогда не выполняетсяпоказано на рисунке.