0
I am developing a Cordova app and I am using the Sqlite plugin to make queries in the database. But as the functions of querys are asynchronous I have a problem to create a multidimensional array.
tx.executeSql("select que pesquisa os grupos", [], function(tx, grupos) {
var arrayGrupos = []; // Cria uma variavel para armazenar os grupos
for(grupoAtual in grupos) { // faz o loop pelos grupos
var arrayItensGrupos = []; // Cria uma variavel para armazenar os itens dos grupos
tx.executeSql("select que pesquisa os itens dos grupos", [], function(tx, itensGrupos) {
for(itemAtual in itensGrupos) { // faz o loop pelos itens dos grupos
detalhesItem = { // Cria o item
nomeItem: itemAtual.nome_item
...
}
arrayItensGrupos.push(detalhesItem); // Adiciona o item ao array
}
}
detalhesGrupo = { // Cria o grupo
nomeGrupo: grupoAtual.nome_grupo,
listadeItens: arrayItensGrupos //** adiciona o array com os itens
}
arrayGrupos.push(detalhesGrupo); // Adiciona o grupo ao array
}
});
When I give a console.log
in the group array (arrayGrupos
) it returns the groups with the right name, but the array with the list of items of the group (listadeItens: arrayItensGrupos
) empty. Some groups have several items and others do not, in those with few items comes the normal list but in the group that takes a little longer it does not expect to return all items (by the function being asynchronous) and shows as if the list is empty.
So you can wait for the function executeSql
(asynchronous) return the result to proceed?
I confess that as much as I have advanced and enough in javascript I do not know why I could not learn
Promise's
, I’ve read the documentation but I found it kind of confusing I don’t know, I’ll test your answer that is looking pretty simple to implement in my other functions.– Bruno Romualdo