Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire dormir une fonction quelques secondes

    7 août 2009 à 2:50:03

    Bonsoir amis Zér0s :)

    Voilà je fais une fois de plus appel à ma communauté préférée. J'ai besoin de vos talents. Je m'explique :

    J'ai créé un script qui avec AJAX et PHP me dit si un dossier existe ou pas. S'il existe une variable prend pour valeur "Oui" ou "Non" si le dossier n'existe pas ;)

    Voici les bouts de code :

    cdFctDirExist("/"+cdPara);
    
    /*
    ici c'est la fonction AJAX qui dit si le dossier existe,
    et la fonction qui sert de réponse et qui attribue la valeur
    de la variable, soit "Oui" soit "Non" est plus bas
    et elle s'appelle "getDataCdDirExistFct" 
    */
    
    #
    
    if(DossierExist == "Oui")
    {
    ..
    

    Fonction de réponse :
    function getDataCdDirExistFct(sData)
    {
       if(sData == "Oui")
       {
          DossierExist = "Oui";
       }
       else
       {
          DossierExist = "Non";
       }
    }
    


    Maintenant je vous explique le problème. Vous voyez tout en haut la condition qui demande si "DossierExist" = "Oui", et bien normalement elle devrait être vrai.

    SAUF que le temps que la réponse donnée avec AJAX arrive, le navigateur lui est déjà passé à la condition et donc dit que la condition est fausse. Normal, puisque la variable n'est pas encore arrivée avec AJAX.

    J'ai mis un alert a la place du dièse (pour que vous voyez où je l'ai mis). Et comme avec un alert, le navigateur attend que j'ai cliqué sur OK, et bien la réponse AJAX est arrivé et SURPRISE, la condition vaut maintenant vrai.

    Je cherche donc à faire "endormir" le navigateur quelques secondes.

    Voilà, j'espère que vous avez plus ou moins compris mon problème. :)

    Bonne soirée.
    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2009 à 3:06:08

      Salut toun,

      Peut-être pourrais-tu utiliser des timeout en javascript ?

      Skillz
      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2009 à 3:06:46

        La meilleure solution est d'utiliser ton callback.

        Il faudrait que tu lances la suite de ton code (avec la condition et la suite) à la fin de ta fonction getDataCdDirExistFct() ;)
        • Partager sur Facebook
        • Partager sur Twitter
          7 août 2009 à 14:44:46

          J'ai adopté les timeout. Tout marche très bien grâce à vous tous.

          Merci à vous pour votre aide. :)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            7 août 2009 à 14:51:46

            les callback c'est mieux, imagine ta requete foire, prends plus de temps que prévu…

            T'as des oui/non, utilise les boolean, c'est fait pour.

            Acessoirement le callback te fait pas attendre dans le vent, c'est plus réactif. Enfinbon, c'est toi le chef
            • Partager sur Facebook
            • Partager sur Twitter
              7 août 2009 à 14:54:10

              Ou sinon tu désactive le mode asynchrone d'XHR...
              Mais bon encore une fois les callback c'est bien mieux ;)
              • Partager sur Facebook
              • Partager sur Twitter

              Faire dormir une fonction quelques secondes

              × 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