Pause javascript

Résolu
Bonjour,
Voilà un petit problème qui m'arrive, j'aimerais faire une pause dans une fonction !!!

Voilà le code que j'ai tapé :

function pause(duree)
{

var date_debut = new Date();
var actdate = new Date();

	while (actdate.getTime() - date_debut.getTime() <= duree)
	{
	actdate = new Date();
	}

}


Le problème c'est que la pause dure bien le temps voulu, mais bloque tout pendant la pause !!!

Merci beaucoup si vous arrivez à trouver la solution
Configuration: Windows Vista
Chrome 3.0 et internet explorer

8 réponses

  1. Salut,

    Oui c'est un comportement normal, on ne peut pas faire de pause en javascript,
    il faut découper ton code en fonctions, et utiliser l'instruction "settimeout" pour appeler l'étape suivante après le délai choisi :

    alert( "debut du code");
    settimeout( "etape2();", 5000);
    
    function etape2() {
         alert( "suite du code");
    } 
    


    Attention, l'execution ne s'arretera pas apres l'appel a settimeout, mais la fonction etape2 sera executée après le délai choisi.
    1. hello

      a ta ligne 81 date_debut correspond a une date et non un nombre
      il faudrait que tu mettes date_debut.getTime()

      ou si tu ne veut pas d'embêter avec le .getTime()
      tu remplace avant quelques lignes au dessus var date_debut = new Date();
      par var date_debut = new Date().getTime();

      en espérant t'avoir aidé :)

      ps: le sujet est mis en résolu c'est fait exprès ?
      1. Merci beaucoup !!!
        J'ai refait mon code, cependant, j'ai une erreur bizarre :
        Détails de l’erreur de la page Web

        Message : ')' attendu
        Ligne : 1
        Caractère : 17
        Code : 0
        URI : http://www.poyostudio.13.fr/wPoyOs/app/plusoumoins/ 


        et encore plus bizarre, selon IE l'erreur se trouve dans le html et non le javascript

        ( l'adresse du site si tu veux regarder : http://www.poyostudio.13.fr/wPoyOs/app/plusoumoins/ )

        function pause(duree)
        {
        
        	var date_debut = new Date();
        	var actdate = new Date();
        	
        	pause2(duree,date_debut);
        }
        
        function pause2(duree,date_debut)
        {
        	var actdate = new Date();
        
        	if (actdate.getTime() - date_debut.getTime() <= duree)
        		{
        		setTimeout("pause2(" + duree + "," + date_debut + ");", 10);
        		}
        }
        
        
        
        function pause3(duree,date_debut)
        {
        	var actdate = new Date();
        
        	if (actdate.getTime() - date_debut.getTime() <= duree)
        		{
        		setTimeout("pause3(" + duree + "," + date_debut + ");", 10);
        		}
        }
        1. REmerci beacoup !!!

          en fait j'ai mis le sujet en résolu parceque je ne pensez plus avoir d'erreur.

          Ca ne marche toujours pas, mais je devrais m'en sortir
          1. Euh excuse moi de te REdéranger, mais j'ai encore un problème

            en fait, mon code marche, mais lorsque je fait un truc du genre

            pause(3000);
            instruction_suivante;


            Le programme exécute instruction suivante et pause() en même temps !!!

            function pause(duree)
            {
            	var date_debut = new Date();
            	var ndate_debut = date_debut.getTime();
            	var actdate = new Date();
            	
            	pause2(ndate_debut,duree);
            
            }
            
            function pause2(ndate_debut,duree)
            {
            	actdate = new Date();
            
            	if (actdate.getTime() - ndate_debut < duree)
            		{
            //						alert (actdate.getTime() - ndate_debut);
            		setTimeout("pause3(" + ndate_debut + "," + duree + ");", 10);
            		}
            
            }
            
            
            
            function pause3(ndate_debut,duree)
            {
            	actdate = new Date();
            
            	if (actdate.getTime() - ndate_debut < duree)
            		{
            		setTimeout("pause2(" + ndate_debut + "," + duree + ");", 10);
            		}
            //			alert (actdate.getTime() - ndate_debut);
            }
            1. en fait j'ai l'impression que tu n'as pas très bien saisi le fonctionnement de ton pause ^^

              le setTimeout sert a executer une fonction mais plus tard
              il ne fait pas de pause a proprement parler

              pour faire comme si tu avais une pause il faudrait que tu commence a executer ton programme puis tu fais un settimeout de de ce que tu veut qu'il arrive après la pause (comme l'a dit boost en fait)
              1. Ok, je n'avais pas compris que le settimeout n'était pas bloquant.