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 :

pause dans l'execution d'une boucle...


Sujet :

JavaScript

  1. #1
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut pause dans l'execution d'une boucle...
    Bonjour à tous...

    malgré mes recherches, je n'ai rien trouvé. Alors j'imagine que ce que je recherche n'existe pas (ou alors par sous la forme que j'attends)

    je cherche à faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ( waiting )
       //attendre X secondes
        ...
       waiting = check();
    }
    je précise que je connais les functions setTimeOut() et compagnie,
    je m'attendais à trouver une fonction sleep ou un truc dans ce goût là...
    Pensez vous que je dois modifier mon script pour passer par setTimeOut?

    je précise que pendant mon check(), je fais des appels serveurs via XMLHttpRequest d'où la nécessité (selon moi) de marquer une petite pause

    Merci de m'avoir lu...

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    pause nécessaire, pause nécessaire... tu es un peu catégorique

    pourquoi ne gères-tu pas la relance à partir de l'événement onreadystatechange, par exemple, plutôt que de programmer un timer ou une boucle?
    tu seras peut-être surpris de la vitesse d'exécution...

  3. #3
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    Salut,

    D'abord, merci de m'avoir répondu...
    j'essayais de ne pas être trop catégorique, avec la précision "(selon moi)", mais c'est raté apparemment...

    je ne suis pas sur de t'avoir bien compris et c'est sans doute du à ma connaissance très nouvelle des XMLHttpRequest...

    Me suggères-tu d'utiliser une structure récursive du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    changement d'état et etat ok
        si reponse oui
            c'est fini
        sinon
            je recommence la requête (avec send(params) par exemple...)
    je dirais que non car c'est pas franchement différend que de faire un while (sans être catégorique bien sûr )

    je précise que le but de l'opération consiste à réunir deux joueurs pour un petit jeu de backgammon en ligne.
    le premier arrivé devant attendre qu'un autre gus se connecte pour jouer

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ah ouais... je n'avais pas du tout imaginé ce genre d'objectif; tu peux expliquer (alors) ce que tu demandes à ton script?

  5. #5
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    re,

    alors, pour l'instant mon script fait déjà une requête qui permet au joueur de se signaler sur le serveur
    cette requête fonctionne vraissemblablement bien et me retourne un identifiant de partie ainsi que le statut d'attente ou non

    Si tu es le deuxieme joueur, alors quelqun est déjà là et il n'y a pas de soucis...
    En revance, si tu es le premier, j'aimerais qu'il y ait une vérification régulière sur le serveur

    je vous epargne le script entier et je cible un peu...
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    // les variables online, idJoueur et idJeu sont définies en dehors du script...
    if ( onLine ) {
    	// il faut se signaler au serveur et attendre un deuxième joueur
    	waiting = 1;
    	connectRqst = getXhr();
    	connectRqst.onreadystatechange = function() {
    	if ( connectRqst.readyState == 4 && connectRqst.status == 200) {
    			reponse = connectRqst.responseText;
    			param = reponse.split('|');
    			alert(reponse);
    			eval( 'idPartie=' + param[0] + ';');
    			eval( 'waiting=' + param[1] + ';');
    			while ( waiting == 1 ) {
    				viderElement( 'gammon_attente' );
    				var attente = get( 'gammon_attente' );
    				var myImg = document.createElement( 'img' );
    				attente.appendChild( myImg );
    				myImg.alt = "on attend...";
    				myImg.src = backGammon.rep + 'attente.gif';
     
                                        /////////////////////////////////////////////
                                        /////////////////////////////////////////////
                                        // ma vérification ici
    			         // check deuxième joueur
    			}
    		}
    	}
    	connectRqst.open( 'post', 'online_game.php', true );
    	connectRqst.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	param = "cmd=connect&id_jeu=" + idJeu + "&id_joueur=" + idJoueur;
    	connectRqst.send(param);
     
    	alert('la requête a du être gérée...');
    }
    le check, c'était pour simplifier, mais pour tout dire, je pensais imbriquer une autre requête...

    Bon, je crois que ce coup ci, tu m'as bien tiré les vers du nez...
    J'espérais une solution simple qui tourne autour d'un sleep(qqchose)
    mais c'est parce que j'avais la flemme de mettre ma vérification dans une fonction....
    Je crois que je ne vais pas y échapper....

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    il faut forcément que tu relances la connexion serveur pour obtenir la mise à jour des joueurs; ça me paraît impossible avec un while dans le corps de la fonction;
    comme aucun sleep n'existe en js, le setInterval paraît nécessaire;

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2012, 14h12
  2. Mettre une pause dans l'execution
    Par lessoy dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 17/04/2007, 13h14
  3. Deux passages dans mon "execute" pour une seule soumission
    Par fabricew59 dans le forum Struts 1
    Réponses: 7
    Dernier message: 27/06/2006, 14h24
  4. erreur dans l'execution d'une requete
    Par marsupilami34 dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/09/2005, 16h47
  5. Pause dans l'exécution d'une fonction
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2005, 07h48

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