Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Good

[Resolvido] Javascript dando lag..

Recommended Posts

Não sei pq tá deixando o pc lento, mas eu uso o mesmo modo para um chat que eu fiz em ajax..

 

Olha o código:

function atualizaDIV(){
    $(document).ready(function() {
           $.post('atualizaDIV.php', {acao: "atualiza"}, function(a){
               var b = $.parseJSON(a);
               $("#div").html(b.html);
               if(b.online && b.admin){
                  $("#mdiv").show();
               } else {
                  $("#mdiv").hide();
               }
           });
    });
    setInterval("atualizaDIV()", 2000);
}

atualizaDIV();

 

Tá vendo que eu coloco um setInterval, até os segundos estão exatos ao chat.. esse código fica em uma página onde o chat não funciona!

 

E tipo, se eu altero 2000 para 5000 o tempo para dar lag no pc aumenta, e esse lag dá com outras pessoas..

 

Eu já até deletei o que tinha dentro do arquivo atualizaDIV.php pra ver se era isso.. tirei todo o código de dentro do $.post, deixei somente a requisição (enquanto o arquivo ainda estava em branco)..

 

Eu cheguei a conclusão de que é por causa desse setInterval, mas eu já uso ele pro chat e não dá lag.. eu uso em outras ocasiões tbm.. só q eu já desativei todos os setInterval da página e deixei somente esse que dá lag..

 

 

alguém me ajude a resolver isso, por favor !!

 

obrigado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está fazendo um setInterval() recursivo.. ou seja, disparando milhares de requisições após alguns segundos..

em vez de disparar apenas uma a cada x tempo.

 

troque:

 

     });
    setInterval("atualizaDIV()", 2000);
}

atualizaDIV();

por:

     });
}
window.setInterval( atualizaDIV, 2000 );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se você não ta fazendo um OverLooping colocando essa função dentro de uma função que chama ela duas vezes ou em outra possa repetir ela.

 

Entende?

 

Ja aconteceu isso comigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É não tiago..

 

a solução do william funcionou.. só q eu tive q colocar o window.setInterval( atualizaDIV, 2000 ); dentro e fora da função!!

 

vlw ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não amigo! não coloque dentro não!!

 

apenas fora.

se você for fazer recursivo, então use setTimeout();!

 

setInterval() recursivo não faz sentido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei colocando um alert dentro da função, e coloquei o window.setInterval fora da função.. e o alert só apareceu 1 vez..

 

aí coloquei somente dentro da função e chamei a função por fora, aí parece q tbm só apareceu o alert uma vez.

 

Coloquei o window.setInterval dentro e fora, e começou a aparecer o alert de X em X segundos. O q eu quero é que atualize periodicamente, e não apenas uma vez..

 

Bom, pelo menos tá funcionando e não tá dando mais lag no pc..

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.