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 :

setTimeout


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut setTimeout
    Bonjour à tous,
    Je croyais que la méthode "setTimeout" exécutait le code de manière async... Mais quand la fonction que j'appel prend un certain temps, ma page arrête le temps que le code s'exécute. Par exemple, j'ai un gif animé dans ma page et il s'arrête lorse que le code s'exécute...

    Quelqu'un à une explication?

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    il ne me semble pas que ce soit du asynchrone, c est juste une execution reportée.

  3. #3
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Est-ce qu'il y aurait moyen de mettre du traitement js asynchrone?

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    pour ca faudrais pouvoir faire du multi thread
    et meme en cherchant bien j'ai pas trouvé

    tu voudrais faire quoi ?
    Y a peut etre moyen de ruser

  5. #5
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Ben, c'est que je fais un xsl transform mais, en fonction de la taille du xml, il peut prendre jusqu'à 4 secondes... J'affiche un message "Chargement en cours" avec un petit gif animé mais il roule pas durant le processus...

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    sur certains sites ils disent que settimeout et setinterval peuvent créer des threads mais il semblerais que non

    je continue de creuser car j'en ai besoin aussi de la gestion des threads.

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <html>
    <script>
    function grind(s) {
    	var dnow = new Date();
    	var r = 950000;
    	while (r--) Math.random();
    	var dend = new Date();
    	var f = document.getElementById("foo");
    	f.innerHTML += s + "<br>" + dnow.getMinutes() + " " + dnow.getSeconds() + "<br>" + dend.getMinutes() + " " + dend.getSeconds()  + "<hr>";
    }
    window.onload=function(){
    	setTimeout("grind('a');",10);
    	grind('b');
    	setTimeout("grind('c');",10);
    	grind('d');
    }
    </script>
    <div id="foo"></div>
    </html>
    on voit bien qu il ne se sert que d'un seul thread (ie ou ffx meme combat)
    il attend d'avoir executé b pour lancer d et ensuite il fais les appels reportés dans l ordre aussi

  8. #8
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Ouais mais c'est pas du threading puisque les codes ne seront pas traités en même temps (en sachant que c'est jamais en même temps mais on se comprend...).

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    autre solution, tu fais ta transfo en php (ou autre coté serveur) et tu fais la demande et la recup en javascript avec xmlhttp

  10. #10
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    La seule solution que je verrais est vraiment pas propre mais bon, ce serait d'ouvir tout simplement un popup hors champ (en le positionnant hors de l'écran), de lui faire faire le travail et de retourner le résultat dans le window.opener... Mais c'est vraiment pas une solution que j'utiliserais...

  11. #11
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Ouais, effectivement, c'est même ce que je voulais faire à l'origine mais je voulais sourtout rendre le code complètement indépendant du serveur, n'avoir besoin que de se faire fournir un XML pour produir le résultat...

  12. #12
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Mais je vais plus tôt retirer mon gif animé et mettre simplement le texe "Chargement en cours"...

    Merci beaucoup de ton aide et si tu trouves une solution de threading, fais moi signe!!!

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    [truc_laid]
    et si tu lances l'exec dans une iframe masquée ?
    [/truc_laid]

  14. #14
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    C'est pas con du tout ça!!! Je jette un oeil su la possibilité...

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    autre truc encore plus affreux :
    dans une popup et dans le window.onload de la popup, tu rebalance dans le opener et tu fais un close ...


    han j'ai honte

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ha javascript et son execution aléatoire en bulle ...

    il me semble avoir vu quelque part un truc d'emulation de threads en javascript mais je sais plus où ... je recherche ...

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tous les trucs d emulation de threads que j'ai vus se basent sur setTimeout ou setInterval.

    voir de la bidouille avec une applet java ...

  18. #18
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Ouais, c'est ce que je te disais plus haut... Mais de créer un iFrame dynamiquement et de lui faire gérer le code, je ne trouve pas ça si laid que ça... Bon, c'est pas propre propre mais pas con du tout!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme setTimeout
    Par schmoey dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2005, 16h36
  2. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 10h22
  3. setTimeOut ne peu pas appeler une fonct. et appeler une var?
    Par bywazy dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/06/2005, 09h56
  4. [Ultra débutant] Problème avec setTimeout()
    Par tails dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/05/2005, 16h05
  5. probleme avec setTimeout
    Par barbarello dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/11/2004, 13h45

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