Как сделать 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

Ответы (0 шт):