J'ai un code JavaScript pour lequel j'ai besoin d'ajouter une fonction veille/attente. Le code que je cours est déjà dans une 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 PHP, car mon serveur ne le supporte pas, bien que jQuery convienne.
JS n’a pas de fonction de veille, mais setTimeout () ou setInterval () fonctions.
Si vous pouvez déplacer le code que vous devez exécuter après la pause dans le rappel setTimeout()
, vous pouvez procéder comme suit:
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
voir exemple ici: http://jsfiddle.net/9LZQp/
Cela n'arrêtera pas l'exécution de votre script, mais tant que setTimeout()
est une fonction asynchrone, ce code
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
imprimera ceci dans la console:
HELLO
DOG
THIS IS
(notez que CHIEN est imprimé avant ICI )
Vous pouvez utiliser le code suivant pour simuler un sommeil sur de courtes périodes:
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, utilisez simplement:
sleep(1000);
exemple: http://jsfiddle.net/HrJku/1/
veuillez noter que ce code tiendra votre script occupé pendant n millisecondes . Cela arrêtera non seulement l'exécution de Javascript sur votre page, mais, en fonction de l'implémentation du navigateur, pourrait rendre la page totalement insensible et éventuellement rendre l'ensemble du navigateur inactif . En d'autres termes, c'est presque toujours la mauvaise chose à faire.