Bom dia, tudo bem?
Gostaria de tirar uma duvida, é com relação ao sincronismo, escrevi um código abaixo de um exemplo que estou tendo dificuldade de como implementar da melhor forma, se alguém puder me ajudar agradeço.
Seria a sincronização da consulta no banco de dados com a sequencia das outras funções na sequencia do código.
Quando chamada a função inicializar é colocado dentro da variável qtdDadosBD o resultado da quantidade de linhas da consulta qtdDadosBD(), porém, como sabemos as funções são executadas de forma assíncrona, ou seja, na linha do IF abaixo, a variável qtdDadosBD ainda esta undefined, falhando a ideia do código.
Gostaria, se possível, se alguém pudesse escrever esse mesmo código de exemplo, de tal forma que a parte do if() só seja executada após terminar a consulta ao BD executada acima, mantendo a consulta em uma função separada.
Desde já agradeço a atenção.
$scope.inicializar = function(){
$scope.dadosFixos = [{descricao: 'teste'}, {descricao: 'teste'}, {descricao: 'teste'}]
var qtdDadosBD = $scope.qtdDadosBD();
//Como executar esse IF, somente depois da consulta acima qtdDadosBD() terminar
if($scope.dadosFixos.length != qtdDadosBD){
$scope.atualizaDadosBD($scope.dadosFixos.length, qtdDadosBD);
}
}
$scope.qtdDadosBD = function() {
DatabaseValues.setup();
DatabaseValues.bancoDeDados.transaction(function(transacao){
transacao.executeSql('SELECT * FROM dados', [], function(transacao, resultados){
return resultados.rows.length;
})
})
}