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 :

Répéter en boucle l'appel d'une fonction puis débloquer l'appel sous condition.


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 58
    Points : 55
    Points
    55
    Par défaut Répéter en boucle l'appel d'une fonction puis débloquer l'appel sous condition.
    Hello,

    Ce que je cherche à faire est plutot en langage JSCRIPT .

    Le but est de lancer une plateforme/page web que lorsqu'un XML a fini dêtre récupéré.

    Comment cet XML est-il construit ?

    En parallèle de l'exécution de mon script.
    Un XML est construit et récupéré côté serveur en C# et initialise une variable globale en jscript MY_XML, initialement "".

    Il faut donc s'assurer que cette variable MY_XML ne soit pas vide.

    Solution :
    Côté script, je cherche à bloquer l'éxécution du script et attendre la récupération de cet XML. Mon code JSCRIPT est le suivant :

    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
     
     
    function openPlateforme()
    {
    	window.status = "Retrieving XML ...";
     
    	waitXMLToComplete();
                 // SUITE DU CODE : LANCEMENT DE LA PLATEFORME ... etc etc
     
    }
     
    // fonction qui check si le XML construit côté serveur est bien rempli
    function waitXMLToComplete()
    {
    	if(MY_XML == null || MY_XML == "")
    	{
    		//alert("Wait more to retrieve XML");
    		waitTradingXMLToComplete();
    	}
    	//alert("XML retrieved !");
    }
    Il semble que cette boucle/récursivité freeze le script.

    Si je décommente "alert("Wait more to retrieve XML");"

    L'alerte s'affiche bien 2 - 3 fois (quand le XML est tourjous pas construit) ,
    et la plateforme fini par se lancer.

    J'ai l'impression que l'alert empêche le Freeze.... et tout se passe bien.

    Mais bien sûr je ne veux pas afficher cette alert .

    Alors les gars, avez vous un ptite solution/workaround pour faire un "wait-like until .." sans sushis

    -> J'ai lu qu'un while consomme en CPU ...
    -> Le setinterval/settimeout sont asynchrones et n'empêche pas l'exécution du script .. donc on peut aps trop simuler un wait ...

    Thks

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    et avec AJAX ? Je crois qu'il existe une méthode qui permet de connaître à tout moment le statut (readyState) :
    http://nicolaspied.developpez.com/ajax-premiers-pas/

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/10/2014, 14h54
  2. [XL-2007] Envoyer le numéro d'une boucle dans l'appel d'une fonction
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2012, 18h18
  3. Probleme dans une boucle for, faisant appel a une fonction
    Par mapotam dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/01/2010, 21h41
  4. Réponses: 5
    Dernier message: 06/01/2006, 11h41
  5. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37

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