Я настоятельно рекомендую вам взглянуть на библиотеку async , это отличная библиотека для такого рода вещей.
Теперь давайте поговорим о вашей проблеме и о том, как ее можно решить,предполагая, что updatePE
является вашей собственной функцией, я бы преобразовал эту функцию в обещание или добавил к ней обратный вызов, таким образом, вы знаете, когда она завершит выполнение.
например
// Promise implementation
function updatePE(x, y, z) {
return new Promise(function(resolve, reject){
// Do your work here and when is done resolve it
resolve();
});
}
// Callback implementation
function update(x, y, z, callback)
{
// Do your work here and when is done, callback
callback()
}
сейчасиспользуя асинхронную библиотеку, вы можете сделать следующее
// If your updatePE uses callback
async.forEach(result.rows, function(row, callback) {
updatePE(x, y, z, function() {
callback(null)
});
}, function(err){
if (err) {
// Loop is finished with an error
} else {
// Loop is finished without an error
}
});
// If your updatePE uses promise
async.forEach(result.rows, function(row, callback) {
updatePE(x, y, z)
.then(function(){
callback(null)
})
.catch(function(err){
callback(err)
})
}, function(err){
if (err) {
// Loop is finished with an error
} else {
// Loop is finished without an error
}
});