2011-06-28 3 views
3

J'ai donc une fonction $ ajax qui va à une URL et obtient plusieurs objets json que je fais en divs. J'ai environ 50 objets, et j'appelle la fonction $ ajax avec setInterval toutes les 10 secondes afin qu'il puisse obtenir des mises à jour pour chacun des objets json que je fais en divs. Je remarque que chaque fois que la fonction $ ajax est exécutée, le navigateur se bloque pendant une seconde ou deux. Comment puis-je minimiser/éliminer le gel ou y a-t-il une meilleure approche de ce que j'essaie de faire?

+9

afficher du code réel, mais il semble que vous le signalez pour effectuer un appel synchrone au lieu d'un appel asynchrone –

Répondre

0

Les manipulations de Dom peuvent provoquer le blocage du navigateur. Essayez de renvoyer la div que vous voulez mettre à jour plutôt que seulement les données afin que tout ce que vous faites remplace le nœud actuel. L'idée est de minimiser les interactions dom.

0

Les appels asynchrones ne gèlent pas le navigateur. Si vous avez déjà vérifié que vous exécutez votre appel AJAX de manière asynchrone (la méthode par défaut), vous devez vérifier le processus qui convertit vos réponses JSON en divs. Ce processus n'est pas asynchrone et peut bloquer d'autres opérations.

0

Nous devrions vraiment à votre code, si vous voulez afficher, de chercher quelque chose d'étrange, mais il est possible que vous utilisez dans l'une des questions suivantes:

0

$ ajax est probablement pas ce qui est à l'origine de votre gel. $ ajax rappelle votre serveur Web de manière asynchrone, il ne devrait donc pas bloquer votre navigateur. Si vous recréerez vos 50 objets à chaque appel, cela aura certainement un effet de gel. Ne mettez à jour la vue que si elle a des modifications.

Comme pour une meilleure façon, je recommanderais d'utiliser une bibliothèque comme backbone.js pour gérer l'actualisation de votre couche de vue pour vous.

Questions connexes