Je suis d'accord avec les autres posters, une longue nuit de sommeil est une mauvaise idée.
Cependant, setTimeout ne résiste pas à l'exécution, il exécute la ligne suivante de la fonction immédiatement après le délai d'attente est DÉFINI, et non pas après l'expiration de ce délai, de sorte que de ne pas accomplir la même tâche que le sommeil allait accomplir.
La façon de le faire est de ventilation de votre fonction avant et après les parties.
function doStuff()
{
//do some things
setTimeout(continueExecution, 10000) //wait ten seconds before continuing
}
function continueExecution()
{
//finish doing things after the pause
}
Assurez-vous que vos noms de fonction encore décrire avec précision ce que chaque morceau est en train de faire (I. E. GatherInputThenWait et CheckInput, plutôt que de funcPart1 et funcPart2)
Modifier
Cette méthode permet d'atteindre le but de ne pas exécuter les lignes de code que vous décidez qu'APRÈS un délai d'attente, tout en continuant de rendre le contrôle au client PC pour exécuter tout ce qu'elle a mis en file d'attente.
Modifier
Comme l'a souligné dans les commentaires ce sera absolument PAS TRAVAILLER dans une boucle. Vous pourriez faire un peu de fantaisie (moche) de piratage pour le faire fonctionner dans une boucle, mais en général, qui va juste faire désastreuses de code spaghetti.
6 votes
C'est à placer au milieu d'un while, si j'utilise setTimeout, le while continuera à traiter et à mettre en file d'attente d'autres setTimeout qui finiront par s'exécuter en même temps et par créer un peu de concurrence entre eux.
210 votes
C'est une solution horrible - vous allez mâcher des cycles de traitement tout en ne faisant rien.
14 votes
La seule raison d'être d'un sleep est d'interroger ou d'attendre un callback - setInterval et setTimeout font mieux que cela.
1 votes
Vous pouvez probablement faire ce que vous voulez avec le style de passage de continuation en JavaScript. Jetez un coup d'œil à cet article.
0 votes
Duplicata possible de Exécuter script après un délai spécifique en utilisant JavaScript
18 votes
Il est étonnant de voir que les gens disent non sans comprendre ce que le PO veut. Il y a des cas où vous voulez un le vrai sommeil . J'ai maintenant besoin d'un le vrai sommeil pour tester le comportement des navigateurs en matière d'envoi et de réception de messages entre la fenêtre supérieure et l'iframe. Le garder occupé pendant ce temps semble être le seul moyen.
0 votes
Je voulais
sleep()
pour chronométrer une animation. (Je sais qu'il y a de meilleures façons...) Le code que l'auteur de la question présente ne fonctionnera pas pour moi dans Chrome, car plutôt que de mettre à jour le DOM dès que la modification est effectuée dans le script, le navigateur attend que le code finisse de s'exécuter avant de faire des mises à jour du DOM, donc le script attend la somme de tous les délais, puis applique toutes les mises à jour du DOM en une seule fois.