Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script JS

    6 décembre 2017 à 16:28:28

    Bonjour à tous,

    Je pense que la réponse va être non mais je demande quand même :)

    J'ai un script en js qui boucle une table de plus de 1000 lignes pour faire un traitement sur les colonnes.

    Ce traitement peux durée quelques minutes et fige le navigateur et informe qu'il à peut être planté mais si on attend, le traitement arrive bien à terme.

    Y a t il un moyen pour ne pas bloquer le navigateur lors d'un long traitement javascript ?

    Merci d'avance pour vos réponses :)

    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2017 à 16:37:38

      Salut,

      Là, la première solution qui me vient à l'esprit c'est: ajax.

      Maintenant, il faut trouver pourquoi ta requête est aussi longue, car ce n'est pas du tout user friendly ;)

      • Partager sur Facebook
      • Partager sur Twitter
        6 décembre 2017 à 16:50:46

        Ca ne peut pas être de l'ajax car pas de traitement PHP c'est du pur traitement coté client.

        C'est long mais cohérent dans son contexte, en gros les utilisateurs peuvent importer un fichier Excel, ce fichier est boucler puis présenter dans une table avant l'import.

        Ensuite plein de traitement peuvent être fait avant l'import comme scinder des colonnes ou fusionner des colonnes...

        Merci pour ton retour ;)

        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2017 à 16:58:34

          Bonjour,

          J'attendais la réponse pour savoir si tu pouvais déléguer le traitement à un serveur.

          Ce que tu pourrais faire, c'est utiliser un Web Worker (et non pas un serviceWorker qui n'est pas tout à fait la même chose).

          Le principe est simple : tu vas déléguer les traitements bloquants sur un nouveau thread JavaScript (et non pas un thread système, JavaScript tourne en réalité sur un seul thread système). Ce nouveau thread JavaScript va te permettre d'effectuer des traitements long sans pour autant bloquer l'exécution de la page actuelle.

          Pour la théorie, je te laisse regarder le lien.

          En pratique, comme tous les navigateurs n'implémentent pas les Web Workers, il faudra prévoir une solution de rechange. C'est-à-dire qu'en soit, si le Web Worker est disponible, tu pourras l'utiliser à la place de ton code actuel. Si ce n'est pas le cas, tu conservera ton code et il n'y aura rien que le client pourra faire pour y remédier. A moins d'envoyer une notification indiquant de mettre à jour/changer de navigateur.

          if (window.Worker) {
              asynchronousProcessing(fileContent);
          } else {
              synchronousProcessing(fileContent);
          }
          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2017 à 17:06:25

            Ha ça a l'air pas mal, merci pour l'info :)
            • Partager sur Facebook
            • Partager sur Twitter

            Script JS

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown