Pause javascript

Résolu/Fermé
Utilisateur anonyme - 7 oct. 2009 à 20:48
 Utilisateur anonyme - 9 oct. 2009 à 17:36
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

8 réponses

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.
3
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
8 oct. 2009 à 13:37
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
Utilisateur anonyme
8 oct. 2009 à 10:44
Merci beaucoup !!!
0
Utilisateur anonyme
8 oct. 2009 à 13:26
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);
		}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 oct. 2009 à 13:48
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
0
Utilisateur anonyme
8 oct. 2009 à 14:31
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);
}
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
9 oct. 2009 à 02:35
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)
0
Utilisateur anonyme
9 oct. 2009 à 17:36
Ok, je n'avais pas compris que le settimeout n'était pas bloquant.
0