[ JS ]Faire une pause pendant une fonction
Résolu/Fermé
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
-
5 déc. 2010 à 11:49
remjie - 10 oct. 2013 à 02:57
remjie - 10 oct. 2013 à 02:57
8 réponses
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
5 déc. 2010 à 19:57
5 déc. 2010 à 19:57
Salut.
Je ne suis pas certain d'avoir bien compris le problème.
Tu souhaites tout simplement exécuté le code contenu dans la boucle tous les x temps ?
Tu peux utiliser la fonction setInterval.
Par exemple :
Je ne suis pas certain d'avoir bien compris le problème.
Tu souhaites tout simplement exécuté le code contenu dans la boucle tous les x temps ?
Tu peux utiliser la fonction setInterval.
Par exemple :
setInterval(function() { switch(variable) { ... } }, 2000);
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
8 déc. 2010 à 18:39
8 déc. 2010 à 18:39
Il faudra utiliser setTimeout à la fin de la fonction.
Voilà un exemple :
Voilà un exemple :
var div; function boucle(vitesse) { var millisecondes = null; switch(vitesse) { case 'fast': millisecondes = 250; break; case 'slow': millisecondes = 1000; break; default: millisecondes = 500; break; } div.innerHTML += "Ligne ...<br>"; setTimeout(function() { boucle(vitesse); }, millisecondes); } window.onload = function() { div = document.getElementById('div'); boucle('slow'); };
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
9 déc. 2010 à 17:07
9 déc. 2010 à 17:07
Juste une question :
Pourquoi
Et pas
??
Pourquoi
setTimeout(function() { boucle(vitesse); }, millisecondes);
Et pas
setTimeout(boucle(vitesse), millisecondes);
??
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
9 déc. 2010 à 18:28
9 déc. 2010 à 18:28
C'est ainsi qu'il faudrait faire si tu ne souhaites pas utiliser une fonction anonyme :
https://developer.mozilla.org/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
setTimeout(boucle, millisecondes, vitesse);
https://developer.mozilla.org/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
Utilisateur anonyme
5 déc. 2010 à 12:01
5 déc. 2010 à 12:01
essaie de faire une fonction pause comme ceci et dit moi si ca marche:
function pause()
{
while(1==1)
{
if (xxxxx) //la condition pour que la boucle s'arrete (pour quitter la pause)
{break;}
else { return -1; }
}
}
function pause()
{
while(1==1)
{
if (xxxxx) //la condition pour que la boucle s'arrete (pour quitter la pause)
{break;}
else { return -1; }
}
}
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
5 déc. 2010 à 12:31
5 déc. 2010 à 12:31
Le problème, c'st que pour la condition, dans ton code, j'aimerais que ce soit un temps, une pause quoi... :P
Si je savais combien de temps la boucle mettait à s'exécuter, je pourrais mettre le nombre d'incrémeñtation, mais bon, une boucle quasi infine, c'est ap super ! :S
Si je savais combien de temps la boucle mettait à s'exécuter, je pourrais mettre le nombre d'incrémeñtation, mais bon, une boucle quasi infine, c'est ap super ! :S
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
5 déc. 2010 à 18:14
5 déc. 2010 à 18:14
Oui, mais le problème avec settimeout, c'est qu'il a 2 paramètres : le temps, Ok. Mais aussi une fonction. C'est à dire que j'ai aps envi qu'il lance une fonction au bout de 2 secondes, mais qu'il reprenne là ou il en était avant la pause.
Mais je viens d'avoir une idée, en écrivant ca.
Si je fais une fonction pause() avec rien dedans, et que je mets un setTimeout(pause(),2000) à la fin du do, là ou je l'ai indiqué dans mon premier poste, ca marche ?
Merci !!
PS : Je teste tout de suite ! :P
Mais je viens d'avoir une idée, en écrivant ca.
Si je fais une fonction pause() avec rien dedans, et que je mets un setTimeout(pause(),2000) à la fin du do, là ou je l'ai indiqué dans mon premier poste, ca marche ?
Merci !!
PS : Je teste tout de suite ! :P
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
5 déc. 2010 à 18:27
5 déc. 2010 à 18:27
Ca ne marche pas ! :(
En fait, ca exécute la fonction pause au bout de 2 secondes, mais ca n'attend pas d'avoir executé pause() pour terminer d'executer ma fonction prinicpale. :(
Une solution ?
En fait, ca exécute la fonction pause au bout de 2 secondes, mais ca n'attend pas d'avoir executé pause() pour terminer d'executer ma fonction prinicpale. :(
Une solution ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
7 déc. 2010 à 18:59
7 déc. 2010 à 18:59
Ha, revoilà un avion ! :D
Oui c'est ça. Mais je crois qu'il y a un problème. :S Je précise mon code :
Le setInterval, il va remettre à Zero maVariable à chaque fois, non ?
Merci !
Oui c'est ça. Mais je crois qu'il y a un problème. :S Je précise mon code :
function action() { var maVariable = 0; do { switch(maVariable) fais une action en fonction de la valeur du switch, qui change à chaque incrémentation de maVariable (chaque tour de boucle) maVariable++; } while ( maVariable < 11 ) }
Le setInterval, il va remettre à Zero maVariable à chaque fois, non ?
Merci !
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
7 déc. 2010 à 20:00
7 déc. 2010 à 20:00
Il faut seulement mettre ce qu'il y a entre « do { » et « } while (...) »
Donc la valeur de maVariable ne sera pas remise à zéro.
Donc la valeur de maVariable ne sera pas remise à zéro.
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
7 déc. 2010 à 20:34
7 déc. 2010 à 20:34
Ok, mais alors je déclare maVariable en global, c'est ca ?
avion-f16
Messages postés
19250
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
22 décembre 2024
4 505
8 déc. 2010 à 14:06
8 déc. 2010 à 14:06
Oui
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
Modifié par pols12 le 8/12/2010 à 18:27
Modifié par pols12 le 8/12/2010 à 18:27
Salut
J'ai enfin réussi !
Merci à Avion-f16
Code :
Merci encore ! :)
EDIT :
Finalement, j'ai encore un petit problème ! :(
Je voudrais modifier le temps de la pause en fonction de la valeure du switch.
C'est possible ?
J'ai créer une var temps_timer en global. Et j'ai mis ceci :
setInterval ( function(){ [...] }, temps_timer ) ;
Ca ne met aps d'erreur. Mais si dans le switch, je change la valeur de temps_timer, le setInterval ne la prend pas en compte et garde la valeur assigné lors de la déclaration. :(
Il y a un moyen pour que le setInterval prenne la VRAIE dernière valeur assigné à temps_timer ?
☼◄►►►↑↑■■■■==##-->···→{([/ Pols12 \])}←···<--##==■■■■↓↓◄◄◄►☼
J'ai enfin réussi !
Merci à Avion-f16
Code :
<script> var maVariable = 0; setInterval(function action() { switch(maVariable) fais une action en fonction de la valeur du switch, qui change à chaque incrémentation de maVariable. maVariable++; }, 2000); </script>
Merci encore ! :)
EDIT :
Finalement, j'ai encore un petit problème ! :(
Je voudrais modifier le temps de la pause en fonction de la valeure du switch.
C'est possible ?
J'ai créer une var temps_timer en global. Et j'ai mis ceci :
setInterval ( function(){ [...] }, temps_timer ) ;
Ca ne met aps d'erreur. Mais si dans le switch, je change la valeur de temps_timer, le setInterval ne la prend pas en compte et garde la valeur assigné lors de la déclaration. :(
Il y a un moyen pour que le setInterval prenne la VRAIE dernière valeur assigné à temps_timer ?
☼◄►►►↑↑■■■■==##-->···→{([/ Pols12 \])}←···<--##==■■■■↓↓◄◄◄►☼
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
8 déc. 2010 à 18:27
8 déc. 2010 à 18:27
up
pols12
Messages postés
1143
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
31 juillet 2019
119
9 déc. 2010 à 17:39
9 déc. 2010 à 17:39
Salut
J'ai réussi, grâce à ton code avion-f16.
Bon, je crois cette fois-ci que je n'ai plus de problème... :P
Merci ! :)
J'ai réussi, grâce à ton code avion-f16.
Bon, je crois cette fois-ci que je n'ai plus de problème... :P
Merci ! :)