Ich kann die .delay
Methode in jQuery nicht zum Laufen bringen:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Ich verwende eine while-Schleife, um zu warten, bis ein unkontrollierter Änderungswert größer oder gleich einem anderen ist, und ich kann keine Möglichkeit finden, die Ausführung für X Sekunden zu verschieben.
Antworten:
$ .delay wird verwendet, um Animationen in einer Warteschlange zu verzögern und nicht die Ausführung anzuhalten.
Anstatt eine while-Schleife zu verwenden, müssen Sie rekursiv eine Methode aufrufen, die die Prüfung jede Sekunde durchführt, indem Sie
setTimeout
:quelle
setTimeout()
.Sie können einen Vorgang auch folgendermaßen verzögern:
quelle
ES6 setTimeout
Bearbeiten: 204586560000 ms ist die ungefähre Zeit zwischen der ursprünglichen Frage und dieser Antwort ... vorausgesetzt, ich habe richtig berechnet.
quelle
Die
delay
Funktion von jQuery soll für Effekte und Effektwarteschlangen verwendet werden.delay
Weitere Informationen finden Sie in den Dokumenten und im Beispiel darin:Wenn Sie eine Variable auf Änderungen beobachten möchten, können Sie Folgendes tun
quelle
JavaScript
setTimeout
ist eine sehr gute Lösung:Die
delay
Funktion in jQuery wird hauptsächlich zum Verzögern von Animationen in einer jQuery-Animationswarteschlange verwendet.quelle
delay()
stoppt den Codefluss nicht und führt ihn dann erneut aus. In JavaScript gibt es keine praktische Möglichkeit, dies zu tun. Alles muss mit Funktionen erledigt werden, die Rückrufe annehmen, wie siesetTimeout
andere erwähnt haben.Der Zweck von jQuery's
delay()
besteht darin, eine Animationswarteschlange vor der Ausführung warten zu lassen. So wird beispielsweise$(element).delay(3000).fadeIn(250);
das Element nach 3 Sekunden eingeblendet.quelle
Nur Javascript Es funktioniert ohne jQuery
quelle
Javascript ist eine asynchrone Programmiersprache, sodass Sie die Ausführung für einige Zeit nicht stoppen können. Die einzige Möglichkeit, eine Ausführung [pseudo] zu stoppen, ist die Verwendung von setTimeout (), bei dem es sich nicht um eine Verzögerung, sondern um einen "verzögerten Funktionsrückruf" handelt.
quelle
Wenn Sie ES6-Funktionen verwenden und sich in einer asynchronen Funktion befinden, können Sie die Codeausführung mit dieser Funktion für eine bestimmte Zeit effektiv anhalten:
So verwenden Sie es:
Es wird für die angeforderte Anzahl von Millisekunden angehalten, jedoch nur, wenn Sie sich in einer asynchronen Funktion befinden . Beispiel unten:
quelle