IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Exécuter une tâche javascript en arrière plan


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut Exécuter une tâche javascript en arrière plan
    Bonjour,

    Ceci est mon premier post !

    Je travaille sur un logiciel de gestion médical et je dois afficher un certain nombre de listes que je génère en PHP et que je traite en Javascript. En bref je passe mon tableau à ma fonction JS qui créé une div par liste. En arrivant sur la page, toutes les listes générées sont cachées grâce à la méthode hide() de JQuery et une seule est affichée grâce à la méthode show(). J'ai un menu qui lorsque je clique sur une catégorie, cache la liste actuellement affichée pour montrer celle qu'on a sélectionnée.

    Le problème est qu'au chargement de la page ce traitement est affreusement long (environ 7000 ms) et j'aimerai que l'utilisateur ait accès à la première liste pendant que toutes les autres soient créés.

    Je cherche à exécuter un traitement en Javascript en "arrière plan". J'ai effectué pas mal de recherches mais je n'ai pas arrivé à saisir comment utiliser JQuery dans ce cas précis.

    Quelqu'un pourrait m'éclairer ? Merci d'avance

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 669
    Par défaut
    vous parlez de PHP et ensuite JavaScript. cela veut dire que PHP génère la page avec toutes les données et ensuite c'est JavaScript qui construit tout ?

    dans ce cas, votre code JavaScript devrait ressembler à cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // 1re étape : générer la 1re liste
     
    // 2e étape : afficher cette liste
     
    // 3e étape : faire une boucle qui va générer les autres listes
    pendant la 3 étape, le code JavaScript continue de s'exécuter en arrière-plan pendant que l'affichage de la 1re liste est déjà en place.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    En reprenant votre exemple et avec plus de détails, mon code ressemble à ça :

    1) Php récupère les informations et les stocke dans un tableau

    2) Php envois le tableau en format JSON au JS

    3) Javascript créé les divs à partir du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //début boucle
     
    document.write("<div id='nomDuTableau"+indice+"' style='display: none'>" +
    // Contenu du tableau
    "</div>");
     
    //fin boucle
    4) On affiche la div qu'on veut avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ ("nomDuTableau1").show()
    Si j'affiche la première liste à la fin de la première boucle ça ne bloquera pas la page tant que la boucle n'est pas terminée ?
    J'ai oublié de préciser que je suis sous symfony 1.4

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    le temps de traitement est il lié à PHP ou à javascript ? Ou les 2 ?
    Face à ce genre de problème j'aurai tendance à utiliser AJAX dont le premier A signifie Asynchrone, et cet asynchronisme permet justement de charger en tache de fond les tableaux qui ne sont pas affichés sans bloquer le navigateur.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Malheureusement les 2 mais je suis "obligé" de faire le traitement PHP en 1er car sans lui je n'afficherai pas la première liste.

    Du coup j'avais pensé à l'AJAX mais j'ai pense qu'il perd son utilité vu qu'il n'y a plus de demande à faire au serveur et que je veux seulement "optimiser" le Javascript, non ?

    Je ne suis pas très expérimenté en Javascript mais je connais les bases, il y a certains points qui sont assez flous pour moi notamment les tâches asynchrone en JS et les callback que je n'ai pas vraiment réussis à saisir malgré mes recherches, c'est pour ça que je suis un peu perdu

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Il y a plein de solutions de toute façon : plutôt que de générer toutes les listes et les cacher à l'affichage avec du javascript, puisque ces listes doivent se distinguer par un critère choisi dans le menu pour les afficher, on peut par exemple les appeler sur le serveur avec JS/Jquery une fois le critère choisi et les afficher dans le <div> avec une fonction comme jQuery.load() ou jQuery.getJSON()
    Le PHP ne génère que la liste en fonction du critère choisi et qui est passé en paramètre, et coté Javascript l'affichage ne concerne que cette partie de la liste.

    Ce n'est qu'un exemple les solutions sont infinies

Discussions similaires

  1. Exécuter une tâche en "arrière plan" dans un container web
    Par Tyler_Durden dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/08/2011, 15h06
  2. code en c# pour exécuter une commande dos en arrière plan
    Par GhostMoon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/03/2010, 09h48
  3. Exécuter une page PHP en arrière-plan
    Par sunseb7 dans le forum Langage
    Réponses: 1
    Dernier message: 13/12/2009, 19h51
  4. Exécuter une commande UNIX en arrière-plan
    Par sunseb7 dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2009, 10h08
  5. Réponses: 1
    Dernier message: 07/02/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo