Erste Frage, warum möchten Sie in einer Schleife schlafen? Wenn dies erforderlich ist, sollte vielleicht ein Ereignissystem eingerichtet werden. Ich selbst habe die Schlaftaktik viele Male für Multi-threaded Javascript-Programmierung ausprobiert und festgestellt, dass es nicht gut funktioniert. Der beste Weg, Multi-Threading in Javascript durchzuführen, ist ein Event-System wie das von YUI oder fast jedem anderen Framework. Lassen Sie Ihren Hörer dieses Ereignis abonnieren und etwas tun, wann immer es auftritt. In diesen Ereignisrahmen haben Sie die volle Kontrolle darüber, wann Ihr eigenes benutzerdefiniertes Ereignis ausgelöst wird, also ist das keine große Sache.
Hier ist der Link für das Event-Framework des YUI.
http://developer.yahoo.com/yui/examples/event/index.html
Hier ist, wie es codiert werden könnte YUI mit
var myEvent = new YAHOO.util.CustomEvent('fooEvent');
// subscribe a function to be called (first param) inside the scope of an object
// (second param).
myEvent.subscribe(function() {alert(this.count++);},{count:0},true);
setTimeout('myEvent.fire()',1000);
Auf diese Weise, es zu tun ist viel sauberer und kompakter. Oder wenn Sie wollen ein Ereignis Rahmen nicht verwenden versuchen, diese
var myObj = {
count:0,
doSomething:function(){alert(this.count++);}
loopFunc:function(){
this.doSomething();
setTimeout('myObj.loopFunc()',1000);
}
}
, das bietet, was Sie brauchen, und seine kompakter.
Aber wenn Sie wirklich eine Schlaf-Funktion in Ihrem Code haben, dann würde ich empfehlen, einen synchronen Ajax-Aufruf zu einem einfachen Server-Skript. Dann können Sie den Code auf dem Server verwenden, um zu schlafen, wenn Sie möchten. Unten finden Sie einen Link zu einer Frage, die Ihnen zeigt, wie Sie einen synchronen Anruf tätigen können.
How can I get jQuery to perform a synchronous, rather than asynchronous, Ajax request?
Aber ich empfehle Ihnen für die setTimeout Weg gehen. Viel sauberer und Sie möchten wahrscheinlich keine serverseitigen Anrufe tätigen, wenn Sie es vermeiden können.
Das erste, was ich vor der Veröffentlichung tun würde, ist http://stackoverflow.com/search?q=[JavaScript ] + schlafen und Sie können sehen, es gibt viele Lösungen bereits – epascarello
Das nächste Ding fragt sich, warum Sie einen Schlaf brauchen, und nicht eine ereignisbasierte Lösung wie Zoidberg schlägt. – xtofl