361 votes

JavaScript veille/attente avant de continuer

J'ai un code JavaScript que j'ai besoin d'ajouter un sommeil/fonction d'attente. Le code je suis en cours d'exécution est déjà en fonction, par exemple:

function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}

J'ai entendu dire qu'une solution possible pourrait inclure

setTimeout

mais je ne suis pas sûr de savoir comment l'utiliser dans ce cas.

Je ne peux pas utiliser le PHP, que mon serveur ne prend pas en charge, bien que l'utilisation de jQuery, ce serait bien.

650voto

BeNdErR Points 3847

JS ne dispose pas d'une fonction de veille, il a setTimeout ou setInterval fonctions. Jetez un oeil ici pour savoir comment setTimeout et setInterval travail: http://www.w3schools.com/js/js_timing.asp

De toute façon, vous pouvez implémenter votre propre sommeil fonction, comme ceci

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

maintenant, si vous voulez dormir pendant 1 seconde, il suffit d'utiliser:

sleep(1000);

exemple: http://jsfiddle.net/HrJku/1/

veuillez garder à l'esprit que ce code va garder votre script occupé pendant n millisecondes, en d'autres termes, vous ne serez pas en mesure de faire autre chose (le lancement d'une nouvelle fonction ou d'exécuter un autre morceau de code), tandis que le script est en boucle dans l' sleep() fonction


si vous pouvez déplacer le code que vous avez besoin de courir après la pause dans l' setTimeout() rappel, vous pouvez faire quelque chose comme ceci:

//code before the pause
setTimeout(function(){
    //do what you need here
}, 2000);

voir exemple ici : http://jsfiddle.net/9LZQp/

Cela ne va pas bloquer l'exécution de votre script, mais tant qu' setTimeout() est une fonction d'asynchrone, ce code

console.log("HELLO");
setTimeout(function(){
    console.log("THIS IS");
}, 2000);
console.log("DOG");

imprime ceci dans la console:

HELLO
DOG
THIS IS

(notez que le CHIEN est imprimé avant C'EST)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X