"Tempo de resposta excedido" quando consulto o dataset

Consigo exportar para o servidor Fluig mas quando tento consultar o dataset no Eclipse aparece "Erro ao recuperar dados do Dataset. Tempo de resposta excedido!"

O objetivo é criar um dataset com todos os grupos que existem no servidor, a partir do dataset colleagueGroup. Eu sei que já tem um dataset group, mas estou querendo fazer eu mesmo como estudo e não encontro o erro.


function createDataset(fields, constraints, sortFields) {
    var ds = DatasetBuilder.newDataset();
    ds.addColumn("empresa"); ds.addColumn("grupo");

    var dsColleagueGroup = DatasetFactory.getDataset("colleagueGroup", null, null, null);

    var grupos = []; // array com todos os grupos já inseridos no novo dataset

    for(i = 0; i < dsColleagueGroup.rowsCount; i++){
        var grupo = dsColleagueGroup.getValue(i, "colleagueGroupPK.groupId");

        var contem = function(ar, conteudo){
            for(i = 0; i < ar.length; i++){
                if(ar[i] == conteudo){
                    return 1;
                }
            }
            return 0;
        };

        // verificando se o grupo da linha atual já está inserido
        if(contem(grupos, grupo) == 0){
            var empresa = dsColleagueGroup.getValue(i, "colleagueGroupPK.companyId");
            ds.addRow([empresa, grupo]);
            grupos.push(grupo);
        }
    }

    return ds;
}

Olá Alex, você está usando a mesma variável "i" para ambos os laços de repetição, js deve estar usando a mesma em ambos os escopos, seu loop será infinito.

Utilize diferentes variáveis para garantir e veja se resolve.


//Apenas extrato alterando conforme sugestão.
for(var i = 0; i < dsColleagueGroup.rowsCount; i++){
        var grupo = dsColleagueGroup.getValue(i, "colleagueGroupPK.groupId");

        var contem = function(ar, conteudo){
            for(var j = 0; j < ar.length; j++){
                if(ar[j] == conteudo){
                    return 1;
                }
            }
            return 0;
        };

Aaaah sim. Que óbvio. Obrigado.

A função contem antes estava separada e depois coloquei ela dentro e me esqueci de trocar para j. Apesar de que mesmo estando fora ainda estava errado. Tenho que acostumar com esses escopos de variaveis em JS.