2009-11-20 6 views
0

J'utilise dojo pour nos interfaces utilisateur, et je voudrais charger certaines parties du contenu de la page dans l'ordre. Par exemple, pour un certain titre, je voudrais charger des informations générales sur le titre, telles que le ticker, le nom de l'entreprise, les statistiques clés, etc. et une grille avec les prix d'ouverture/fermeture des 30 derniers jours. Des contenus différents seront extraits du serveur séparément. Maintenant, je voudrais d'abord charger la grille afin que l'utilisateur puisse avoir quelque chose à regarder, puis, disons, commencer à charger des statistiques clés qui est un grand ensemble de données prend plus de temps à charger. Comment puis-je faire cela. J'ai essayé: dojo.addOnLoad (function() {Comment puis-je contrôler la séquence de chargement du contenu de la page dans le dojo?

grille de départ(); // fonction de démarrage du réseau simulé qui fonctionne très bien getKeyStats(); // clé simulée fonction getter stat fonctionne aussi très bien });

Mais dojo charge getKeyStats(), puis startGrid() ici pour une raison quelconque, et la séquence ne semble pas avoir d'importance ici. Alors comment je peux contrôler la séquence de chargement à volonté? Merci d'avance!

David

+0

Je n'ai pas compris comment fonctionne le système de notation, merci de me le rappeler. –

Répondre

1

La séquence n'a pas d'importance parce qu'ils sont des requêtes asynchrones; ils apparaissent dans le même ordre que les réponses reçues du serveur, qui ne sont pas nécessairement du même ordre que celles dans lesquelles ils ont été appelés.

Pour les charger dans le bon ordre, faites vos demandes comme d'habitude. Ajoutez un rappel pour une réponse réussie qui place les données de réponse dans un compartiment partagé dans n'importe quel ordre. Une fois que vous avez le bon nombre de réponses (vérifiez-le à la fin de votre rappel), commencez à insérer des données dans la page dans l'ordre que vous voulez.

+0

Bonjour jeff, merci pour votre réponse, pourriez-vous développer votre réponse? donc vous dites que je dois d'abord charger tout le contenu, puis les insérer dans des endroits appropriés? Ce que je veux vraiment, c'est charger le contenu de la page de manière asynchrone, mais charger le contenu de chargement lent le plus tard. –

+0

Ah, on dirait que vous avez des demandes de synchronisation en cours et les plus lents affament la page. Il y a un paramètre de requête ajax que vous devez explicitement utiliser (je pense) pour dire à dojo d'exécuter les requêtes de façon asynchrone. –

+0

Connaissez-vous le paramétrage? un exemple? La requête asynchrone signifie-t-elle aléatoire? Donc, si j'ai plusieurs demandes, je ne saurais pas lequel est traité en premier dans AJAX? –

0

vous pouvez regarder dojo.publish et utiliser un sous-modèle de pub pour coupler ces événements de façon lâche afin que vous puissiez les commander. Pub sub vous permettra de faire la demande et d'écouter tous les sujets à feu. Avec cela, vous pouvez appeler la requête de manière asynchrone et charger les widgets dans leur emplacement respectif tout en les stylisant cachés et utiliser le sous-pub pour les rendre visibles en fonction d'une séquence de publications de sujet.

+0

J'ai déjà utilisé l'abonnement/publication de dojo avant de devoir essayer. Mais je pense que puisque les données pour différentes parties de la page doivent être traitées à des moments différents, cet ordre que je ne peux toujours pas contrôler, n'est-ce pas? –

Questions connexes