Tous,
J'ai cherché partout dans la recherche d'un moyen de faire une réelle fonction sleep (Thread.Sleep, wait, sleep (), faites votre choix...) En JavaScript, et il y avait de nombreux postes autour de cette setInterval utilisation ou setTimeout, il n'y en avait aucun qui a effectivement fait un vrai sommeil.
Le problème, c'est la fonction setTimeout retourne immédiatement le contrôle à son récipient après avoir défini le retardateur. Donc, si vous setTimeout (funct (), 1000), et de son récipient fonctionne pendant 5 secondes de plus, les 4 dernières secondes pourrez voir les deux fonctions en cours au même moment. Maintenant, sans doute, ce qui est bon dans certains cas, peut-être même la plupart des cas en ce qui concerne les applications JavaScript. Toutefois, dans une demande de travail sur Ive été récemment, j'ai besoin de dormir réellement pour quelques secondes. Littéralement faire le décrochage script. La raison en est, Im en utilisant AJAX pour récupérer certaines données, mais son un pull très rapide, en prenant presque rien de temps, mais nous voulons à l'utilisateur de visualiser l'animation de traitement pour quelques secondes (pour affecter PSYCHIQUES...ses une sorte de quiz).
Donc, heres what I did. Son obviouls en fait assez, avec le recul, si Im surpris que je n'aie pas trouvé quelqu'un d'autre utilisant cette technique. Ceci est en fait un fichier à l'exception d'une classe plus large...Quoi qu'il en soit, il s'agit essentiellement pour la postérité, mais les commentaires sont les bienvenus. Oh, et Im sûr il ya de bonnes raisons pour ne manque pas normalement à faire cela, aussi, je suppose que si vous avez exécuté ce depuis trop longtemps, les navigateurs jetterait des erreurs ou des pannes...Je l'ai seulement besoin de 3-5 secondes, donc ce n'est pas un problème pour moi.
this.Sleep = function ZZzzzZZzzzzzzZZZz(naptime){
naptime = naptime * 1000;
var sleeping = true;
var now = new Date();
var alarm;
var startingMSeconds = now.getTime();
alert("starting nap at timestamp: " + startingMSeconds + "\nWill sleep for: " + naptime + " ms");
while(sleeping){
alarm = new Date();
alarmMSeconds = alarm.getTime();
if(alarmMSeconds - startingMSeconds > naptime){ sleeping = false; }
}
alert("Wakeup!");
}
- this.Sleep = function ZZzzzZZzzzzzzZZZz(naptime){
- naptime = naptime * 1000;
- var sleeping = true;
- var now = new Date();
- var alarm;
- var startingMSeconds = now.getTime();
- alert("starting nap at timestamp: " + startingMSeconds + "\nWill sleep for: " + naptime + " ms");
- while(sleeping){
- alarm = new Date();
- alarmMSeconds = alarm.getTime();
- if(alarmMSeconds - startingMSeconds > naptime){ sleeping = false; }
- }
- alert("Wakeup!");
- }
Cela fait partie d'une fonction de classe, et depuis j'ai aussi mon set var = this; juste au-dessus de toute catégorie JS j'écris, ce serait appelé en privé aussi my.Sleep (5), et publiquement comme myObject.Sleep (5 ) (en supposant que vous avez nommé le myObject objet, vous avez probablement wouldnt

)
. c