Alle diese setTimeout-Antworten hier funktionieren nicht!
Ich möchte einfach ein paar Sekunden zwischen zwei Funktionen warten, so wie hier:
do_fn1();
warten(5000);
do_fn2();
Alle diese setTimeout-Antworten hier funktionieren nicht!
Ich möchte einfach ein paar Sekunden zwischen zwei Funktionen warten, so wie hier:
do_fn1();
warten(5000);
do_fn2();
Von phpied.com:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
Zwei Gedanken:
erstens, warum nicht alle Verzögerungsaussagen in eine Wrapper-Funktion packen
var postDelayFunc = function(){
machetwas();
machetwasanderes();
nochwas();
}
dann übergeben Sie in Ihrem Code diese Funktion als Parameter an setTimeout.
//dein code
tuedas1();
setTimeout(postDelayFunc, 1000);
Alternativ schauen Sie sich jQuery deferred an: http://msdn.microsoft.com/en-us/scriptjunkie/gg723713, obwohl Sie wahrscheinlich sehr ähnlichen Code schreiben werden.
Eine Sache fiel mir jedoch auf bei Ihren Antworten auf andere Antworten und möglicherweise wo die Verwirrung entsteht. Ich denke, Sie betrachten Ihre Funktion und sehen einen einzigen Thread, den Sie einfach eine Weile anhalten möchten, bevor Sie fortfahren.
Dies sollten Sie jedoch nicht in JavaScript tun, da es den gesamten Browser blockiert und die Benutzer verärgern wird. Stattdessen geben Sie mit setTimeout an, dass, wenn das Timeout abläuft, ein anderer Thread übernimmt und die übergebene Funktion ausführt.
Sobald das Timeout festgelegt wurde, wird der ausführende Thread mit der nächsten Zeile fortfahren (deshalb denken Sie, dass das Timeout nicht funktioniert). Was Sie wahrscheinlich tun müssen, ist das Timeout festzulegen und ALLE Nachausführungsschritte in die Funktion zu setzen, die an den Timer übergeben wird, wie oben angegeben.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.