[javascript] pause,sleep, ou wait ou rien!

pause,sleep, ou wait ou rien! [javascript] - HTML/CSS - Programmation

Marsh Posté le 10-02-2005 à 14:12:17    

j'aimerai faire des pauses (pose fait des pauses repose t pauses etcc..dsl :pt1cable: ) dans une fonction...
 
mais je trouve pas la fction genre  wait(time) waitFor(time) sleep(time)...
du coup je fais ma propre fction
 

Code :
  1. function mapause(time){
  2.    d=new Date();
  3.    while(1){
  4.      n=new Date();
  5.      diff=n-d;
  6.      if diff > time
  7.         break;
  8.    }
  9. }


 
sauf que le navigateur (firefox ds mon cas) stop le script car il dit que cela provoque un ralentissement blablabla...
 
donc ;(
 
comment faire?
 

Reply

Marsh Posté le 10-02-2005 à 14:12:17   

Reply

Marsh Posté le 10-02-2005 à 14:22:03    

Il faut utiliser la méthoede setTimeout pour faire des trucs à intervals réguliers.

Reply

Marsh Posté le 10-02-2005 à 15:43:01    

Il faut utiliser setTimeout comme l'a dit FlorentG.
Neanmoins il faut faire attention.
L'appel a setTimeout n'est pas "bloquant", ton code continue a s'executer, donc tu ne peux pas l'utiliser a la place de ta fonction. Tu dois adapter ton code.
 
Autre detail, si tu veux executer une fonction a intervales reguliers, tu dois a chaque timeout reutiliser la fonction setTimeout.

Reply

Marsh Posté le 11-02-2005 à 10:06:46    

ah ouais mais nan...je connais setTimeout et ca me sert a rien je veux bloqué pdt n secondes...
 
sinon comment on force la fin d'un setTimeout()?stopTimeout()?

Reply

Marsh Posté le 11-02-2005 à 10:12:40    

Avec le setTimeout tu peux lancer ta fonction au bout de n secondes justement :)

Reply

Marsh Posté le 11-02-2005 à 10:23:58    

euh j'ai pas l'impression qu'on se comprend.
mon script fait:
 
affichage d'une barre de chargement en fction de l'etat de chargement d'une liste d'image...
sauf que en 37ms c'est fini...
donc je voudrai mettre un wait() qq part...setTimeout me servirai pas

Reply

Marsh Posté le 11-02-2005 à 10:36:36    

Si, ça te servirait :D

Reply

Marsh Posté le 11-02-2005 à 12:37:03    

De toute facon en Javascript je ne connais que setTimeout...
Donc soit ca, soit rien du tout :D

Reply

Marsh Posté le 11-02-2005 à 13:20:44    

ben je vois pas il me faut une fonction bloquante pas un  truc  comme settimeout() sinon c clair je peux bidouiller mais du coup ma barre de progression ne refletera pas l'etat d'avancement du telechargement...
 

Code :
  1. function loading(imgL){
  2.  pct=Math.round((nbImgLoaded/17)*100);
  3.  if ( (100-pct) < 10 ){
  4.   color="#0"+(100-pct)+"0000";
  5.  }
  6.  else
  7.  {
  8.   color="#"+(100-pct)+"0000";
  9.  }
  10.  affiche="<TR><TD colspan=\"2\" style=\"background:black;text-align:center;color:white;font-family:verdana;font-size:11px;\">Loading,please wait... "+imgL+"</TD></TR><TR><TD style=\"background:"+color+";text-align:right;color:white;font-family:verdana;font-size:11px;\"  width=\" "+pct+"%\">" +pct+"%</TD><TD bgcolor=\"black\" width=\" "+(100-pct)+ "%\"></TD></TR>";
  11.  document.getElementById("progression" ).innerHTML=affiche;
  12.  //il faut une PAUSE!
  13. }


Message édité par yoskater le 11-02-2005 à 13:21:14
Reply

Marsh Posté le 11-02-2005 à 13:38:22    

Il suffit d'adapter ton code.
Si avant tu voulais faire un truc du genre :

Code :
  1. while(dlpasfini) {
  2.   update();
  3.   sleep(10);
  4. }


Tu peux transformer ce code en qqch comme ca:

Code :
  1. update();
  2. function update() {
  3.   if (dlpasfini) {
  4.     // update ...
  5.     setTimeout("update", 10);
  6.   }
  7. }


Et voila, tu auras transforme ton while+sleep en un if + setTimeout.

Reply

Marsh Posté le 11-02-2005 à 13:38:22   

Reply

Marsh Posté le 11-02-2005 à 13:50:14    

Voilà, seul un setTimeout est utilisable :D

Reply

Marsh Posté le 14-02-2005 à 12:17:59    

Reply

Marsh Posté le 15-02-2005 à 23:13:02    

Je crois que selon comment tu utilise setTimeout, tu peux choisir si il éxécute la fonction AVANT ou APRES les n secondes. (suivant dans quel ordre tu place les attributs ou un truc comme ça mais je suis pas sur)


---------------
Un proverbe chinois dit que lorsqu'on a rien à dire d'intéressant, on cite généralement un proverbe chinois.
Reply

Marsh Posté le 16-02-2005 à 00:21:59    

yoskater a écrit :

euh j'ai pas l'impression qu'on se comprend.
mon script fait:
 
affichage d'une barre de chargement en fction de l'etat de chargement d'une liste d'image...
sauf que en 37ms c'est fini...
donc je voudrai mettre un wait() qq part...setTimeout me servirai pas


 
Où tu as vu qu'il est possible de suivre l'état de chargement d'une image toi ?  :heink:  

Reply

Marsh Posté le 17-02-2005 à 09:40:16    

je parle d'une liste d'image pas d'une image...
 
11 images  
 
donc a l'evt Onload des images:
 
((nbChargé/11)*100)=% de chargement de la totalité des images


Message édité par yoskater le 17-02-2005 à 09:41:50
Reply

Marsh Posté le 17-02-2005 à 09:43:27    

Et tu charges quoi comme images ?

Reply

Marsh Posté le 17-02-2005 à 14:44:43    

?euh des jpg? ;?

Reply

Marsh Posté le 18-02-2005 à 09:57:55    

J'veux dire, à quoi servent-elles ?

Reply

Marsh Posté le 19-02-2005 à 15:47:02    

ben regarde..
 
http://yoan.rousseau.free.fr/MCaltosh/mcCaltosh.html


Message édité par yoskater le 19-02-2005 à 15:47:27
Reply

Marsh Posté le 19-02-2005 à 16:52:35    

Mouais, y'a moyen de faire presque sans images ;)

Reply

Marsh Posté le 19-02-2005 à 18:46:25    

oui je sais mais c'etait pas le but, car c'etait un tp...
sur les images,chargement et confort utilisateur en dhtml


Message édité par yoskater le 19-02-2005 à 18:46:54
Reply

Marsh Posté le 20-02-2005 à 12:14:35    

yoskater a écrit :

oui je sais mais c'etait pas le but, car c'etait un tp...
sur les images,chargement et confort utilisateur en dhtml


 
Je ne sais pas si on peut appeler un préchargement en JS un confort pour l'utilisateur... Moi je parlerais plutôt de nid à bugs inutile...  :o  


---------------
Expert en expertises
Reply

Marsh Posté le 20-02-2005 à 13:40:39    

euh nid de bug merci pour mon code...
cela etant dit je pense que l'utilisateur prefere voir une barre de progression pdt que les images sont mis ds le cache plutot que de voir le  truc arriver images par images..genre les croix rouge remplacées les une aprés les autres...
 
de plus JS est un langage de script "correct" c'est juste que son utilisation devient parfois trés emmerdante pr des pb de compatibilité ...


Message édité par yoskater le 20-02-2005 à 13:41:54
Reply

Marsh Posté le 21-02-2005 à 10:26:54    

Ben si tu tiens aux images, suffit d'en avoir 2 pour toute la calto. Après pour ce qui est texte, tu le met en dur dans le code HTML :)

Reply

Marsh Posté le 20-05-2005 à 15:25:30    

yoskater a écrit :

j'aimerai faire des pauses (pose fait des pauses repose t pauses etcc..dsl :pt1cable: ) dans une fonction...
 
mais je trouve pas la fction genre  wait(time) waitFor(time) sleep(time)...
du coup je fais ma propre fction
 

Code :
  1. function mapause(time){
  2.    d=new Date();
  3.    while(1){
  4.      n=new Date();
  5.      diff=n-d;
  6.      if diff > time
  7.         break;
  8.    }
  9. }


 
sauf que le navigateur (firefox ds mon cas) stop le script car il dit que cela provoque un ralentissement blablabla...
 
donc ;(
 
comment faire?


 
 
En transformant la fonction de la façon suivante:

Code :
  1. function mapause(time)
  2. {
  3.    d=new Date();
  4.    diff=0;
  5.     while(diff < time)
  6.     {
  7.       n=new Date();
  8.       diff=n-d;
  9.      } 
  10. }


 
celle-ci passe sous IE et firefox  ;)  
 

Reply

Marsh Posté le 20-05-2005 à 18:38:11    

Oui mais non, certes la fonction est "bloquante", mais elle est bloquante de chez bloquante.
Pendant l'execution de la fonction, la page ne continue pas a se charger.
 
Alors qu'avec un setTimeout, la page continue a se charger.

Reply

Marsh Posté le 20-05-2005 à 20:14:01    

Bah son code est coherent ... il tient la route je trouve.
 
Ceci dit, hors TP, je prefere etre sur un site qui s'affiche au fur et a mesure plutot qu'il utilise ce genre d'artifice. :p

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed