Как сделать loop сихронным, когда есть Promise (Node js)
Я новичок в node.js
Cтолкнулась с проблемой в async/sync functions
У меня есть метод где loop функция в loop запускается async
и цикл продолжает бежать не дожидаясь пока функция закончит выполнение
function myFooMethod(conn) {
conn.query(`MY_QUERY_HERE`,
function (err, result) {
// Read list with all clients from backup
let list = fs.readJSONSync(`${filesManager.appFolders.assetsFolder}/reports/customersList.json`, "UTF-8");
match(backupList, result)
.then(missingIds => {
if (missingIds.length > 0) {
missingIds.forEach((id) => { <--------- THERE IS THE LOOP
if (id != null) {
console.log("FIRST STEP");
prepareAccountData(conn, id)
}
});
finalResult() <--------- THIS code has to be performed after loop
}
})
.catch(function (err) {
});
})
}
function prepareAccountData(conn, id) {
return new Promise(resolve, reject) => {
conn.query(`MY_QUERY_HERE'`,
function (err, result) {
....
console.log("SECOND STEP");
})
})
}
function match(backupList, salesForceList) {
return new Promise((resolve, reject) => {
...
resolve(mismatchId)
});
}
function finalResult() {
.....
console.log("THIRD STEP");
}
Ожидаемый результат
FIRST STEP
SECOND STEP
FIRST STEP
SECOND STEP
THIRD STEP
То, что получается сейчас
FIRST STEP
FIRST STEP
THIRD STEP
SECOND STEP
SECOND STEP