|
Bas de page | |
---|---|
Auteur | Sujet : Traitement asynchrone |
Publicité | Posté le 01-06-2020 à 15:07:57 |
MaybeEijOrNot but someone at least | Exemple de ce que j'ai tenté :
Cela semble pas mal, mais l'affichage de l'élément "loading" ne se fait pas... EDIT : donc dans ce cas là j'ai dans la console au fur et à mesure, "start" puis "step 1" puis "end" et aucun affichage du loader entre "start" et "step 1". Message édité par MaybeEijOrNot le 01-06-2020 à 16:34:23 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least | Ok je crois que le problème est lié au DOM et non vraiment à l'asynchronité. --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least | Réglé comme ça :
Si quelqu'un a plus propre, qu'il n'hésite pas surtout. EDIT : on oublie, en fonction des propriétés CSS attribuées ça bug, en fonction de si ça passe en cache ou non ça bug. Il semblerait que ce soit mission impossible... EDIT2 : pour l'instant je suis passé sur une solution alternative, j'affiche mon indication dans un évènement qui précède très largement celui qui déclenche ma fonction filemanager. Message édité par MaybeEijOrNot le 01-06-2020 à 18:20:49 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
flo850 moi je |
--------------- |
MaybeEijOrNot but someone at least | J'ai testé (quelques petites erreurs) :
Mais non ça ne le fait pas, le problème vient du fait que le DOM ne se met pas à jour tant que l’exécution du JS n'est pas terminée. Je pensais qu'en passant le JS en asynchrone ça changerait mais non. L'une des astuces trouvée sur stackoverflow est d'utiliser la fonction setTimeout afin de sortir la partie du code qu'elle contient de la pile en cours d'exécution : Mais ça ne fonctionne pas bien chez moi... Message édité par MaybeEijOrNot le 01-06-2020 à 21:08:57 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
flo850 moi je | euh, non. LE dom se mettra à jour dès que possible est ce que parse et create table sont synchrones ou asynchrones ? Est ce qu'elles sont longues ? Message cité 1 fois Message édité par flo850 le 01-06-2020 à 21:28:50 --------------- |
rufo Pas me confondre avec Lycos! | Perso, je serais passé par settimeout() pour le loading. --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
MaybeEijOrNot but someone at least |
Le problème n'est pas lié au onload mais bien au parsing et surtout au createTable (les deux sont synchrones). D'ailleurs le traitement demande tellement de ressources que même un gif ne s'anime plus, la page est bloquée. Donc j'ai deux pistes, soit tenter d'attacher deux évènements distincts voir si ça peut permettre de dissocier soit tenter d'utiliser un web worker. Message édité par MaybeEijOrNot le 01-06-2020 à 23:10:16 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
flo850 moi je | Donc settimzoit sur le loading, mais surtout essaye d'optimiser ton traitement ainsi que la génération du dom Est ce que tu peux déporter le traitement ôté serveur pour n'avoir que la lecture des données ? --------------- |
Publicité | Posté le 02-06-2020 à 08:05:35 |
rufo Pas me confondre avec Lycos! | C'est vrai qu'un traitement JS qui consomme tellement de ressources que même un gif ne s'anime plus, c'est bizarre Soit le client a un CPU de calculette, soit il faut effectivement revoir la façon dont est effectué le traitement.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
MaybeEijOrNot but someone at least | Faut que je teste aussi ta solution Rufo mais oui l'une des contraintes c'est de se passer de serveur à ce moment là. Avec un serveur tout serait cent fois plus simple... Message édité par MaybeEijOrNot le 02-06-2020 à 08:41:52 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
flo850 moi je | mets au moins une pagination sur le tableau : tu parse les données une seule fois, mais tu n'affiche que 100 éléments avec page suivantes/pages précédentes Mais 500 lignes de tableau à générer, normalement c'est assez indolore, à moins qu'il n'y a 500 colonnes et/ou que tu fasse un traitement lourd). Je pense que c'est là que tu dois améliorer les choses. Message cité 1 fois Message édité par flo850 le 02-06-2020 à 08:59:08 --------------- |
flo850 moi je | typiquement, avec des templates : https://www.html5rocks.com/en/tutor [...] /template/ Est ce que tu peux tester un truc simple comme ça ?
Message cité 1 fois Message édité par flo850 le 02-06-2020 à 09:23:14 --------------- |
MaybeEijOrNot but someone at least |
Message édité par MaybeEijOrNot le 02-06-2020 à 10:49:15 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
rufo Pas me confondre avec Lycos! | Je sais pas ce que tu fais dans ton createTable() mais il me semble que faire un .innertHTML = provoque la réévaluation du DOM.
Message édité par rufo le 02-06-2020 à 12:28:44 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
flo850 moi je | map/foreach ont exactement la même performance, c'est autre chose qui t'a mangé tes perfs. Tu as combien de colonnes ? ne garde pas en mémoire le CSV, mais garde en mémoire la version exploitable (un json par exemple) et oui, une seule modif du dom améliore énormement les perfs Message édité par flo850 le 02-06-2020 à 13:25:34 --------------- |
MaybeEijOrNot but someone at least | J'utilise appendChild pour ajouter mon noeud à la fin.
--------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
flo850 moi je | Je suis sûr a 100% que ce genre de tableau ne devrait pas faire ramer --------------- |
MaybeEijOrNot but someone at least | Pour l'instant je ne cherche rien, je me disais que c'était possible un freeze d'une seconde sur ce genre de traitement (on est d'accord que je génère dynamiquement le tableau ?).
--------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least | 1- Je viens de comprendre que je n'ai pas compris ta solution Rufo sur le setTimeout, j'ai déjà testé de mettre l'affichage du message de chargement en cours dans un setTimeout, ça améliore un peu mais en fonction des propriétés CSS ça peut annuler l'effet...
--------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least | Avoir éliminé les innerHTML semble accélérer tout ça, mais ça m'a surtout permis de trouver une fonction qui ralentie tout ça :
Je n'ai pas l'air con avec ça.
Message édité par MaybeEijOrNot le 02-06-2020 à 19:45:13 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
rufo Pas me confondre avec Lycos! | Ben non, dans innerHTML, tu peux mettre du HTML, ça pose pas de pb. Donc tes <br />, tu peux les laisser sauf si pour le rendu final, t'en veux pas.
Message cité 1 fois Message édité par rufo le 02-06-2020 à 20:24:07 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
flo850 moi je | mais au passage "des" inner html --------------- |
rufo Pas me confondre avec Lycos! | C'est clair, ça serait plus rapide. --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
MaybeEijOrNot but someone at least |
--------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least | C'est ma fonction parseDate qui semble critique à l'heure actuelle, elle me bouffe 400 ms, elle est appelée deux fois pour chaque ligne de données. Une idée ? --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
rufo Pas me confondre avec Lycos! | T'as quoi comme données en entrée et tu veux les transformer en quoi au final ?
Message édité par rufo le 02-06-2020 à 22:39:35 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
flo850 moi je |
--------------- |
rufo Pas me confondre avec Lycos! | Je pense même qu'en se passant des objets, ça irait encore plus vite. --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
flo850 moi je | pas sur qu'on gagne tant que ca, et faut gérer a la main la conversion --------------- |
MaybeEijOrNot but someone at least |
Message édité par MaybeEijOrNot le 03-06-2020 à 10:15:03 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
MaybeEijOrNot but someone at least |
Message cité 1 fois Message édité par MaybeEijOrNot le 03-06-2020 à 19:00:40 --------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
gatsu35 Blablaté par Harko |
|
Publicité | Posté le |
Sujets relatifs | |
---|---|
Gestion de messages asynchrone couplé un système synchrone | Requete pour traitement de plusieurs Projets |
[RÉSOLU]Problème de traitement d'un formulaire | [JS]Traitement d'une variable pouvant être un tableau ou pas |
implémenter un flot optique (traitement d'image) | acquisition de données et traitement de résultat |
[Java] Arrêt traitement si doublons dans champ d'un fichier | [Perl] Arrêt traitement si doublons dans champ d'un fichier |
[Shell] Linux, // de traitement | choix multiple et traitement des données |
Plus de sujets relatifs à : Traitement asynchrone |