Boa noite, amigos!
Aproveitando os ensinamentos do curso, estou querendo implementar um projeto no trabalho para por em prática os conceitos.
No código abaixo, necessito que o array só seja montado após o retorno de produtosDAO.listaGabineteCargo e produtosDAO.listaAcumuladorMax.
Utilizando setTimeout, consegui fazer funcionar, mas acredito que haja uma forma mais apropriada para implementar esse código.
Alguma dica de como faço o fluxo do meu código aguardar o retorno de produtosDAO.listaGabineteCargo e produtosDAO.listaAcumuladorMax???
Grato!
app.post("/escolha", function(req, res) {
        var idGabineteCargo = req.body;
        var array = [];
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        connection.connect();
        for(var i=0;i<idGabineteCargo.id_gabinete_cargo.length;i++){
      produtosDAO.listaGabineteCargo(idGabineteCargo.id_gabinete_cargo[i],function(err, results) {
                var local_cargo = tipoCargo(results.rows[0].ds_cargo);
                var acumuladorMax=0;
                produtosDAO.listaAcumuladorMax(local_cargo,function(err, resultado) {
                    acumuladorMax=resultado.rows[0].max;
                });
                //setTimeout(function(){
                    var _config = {
                        orgao_julgador: results.rows[0].ds_orgao_julgador,
                        cargo: results.rows[0].ds_cargo,
                        acumulador: results.rows[0].nr_acumulador_distribuicao,
                        local: local_cargo,
                        maximo: acumuladorMax
                    };
                    array.push(_config);
               // },100);
        });//produtosDAO
              if(i == (idGabineteCargo.id_gabinete_cargo.length-1)){
                  setTimeout(function(){res.render('reposicionamento/escolha', {lista:array})}, 200);
                    //connection.end();
              }
        }//for
    });//escolha 
            