381 Stimmen

JavaScript sleep / Warten, bevor Sie fortfahren.

Ich habe einen JavaScript-Code, dem ich eine Sleep/Warte-Funktion hinzufügen muss. Der Code, den ich ausführe, befindet sich bereits in einer Funktion, z. B.:

function myFunction(time)
{
    alert('Zeit läuft jetzt');
    // Code, um das Programm warten zu lassen, bevor es fortgesetzt wird
    alert('Zeit ist abgelaufen')
}

Ich habe gehört, dass eine mögliche Lösung setTimeout beinhalten könnte.

aber ich bin mir nicht sicher, wie ich es in diesem Fall verwenden soll.

Ich kann kein PHP verwenden, da mein Server dies nicht unterstützt, obwohl die Verwendung von jQuery in Ordnung wäre.

683voto

BeNdErR Punkte 17141

JS hat keine Sleep-Funktion, sondern setTimeout() oder setInterval() Funktionen.

Wenn Sie den Code, der nach der Pause ausgeführt werden soll, in den setTimeout()-Callback verschieben können, können Sie so etwas tun:

//Code vor der Pause
setTimeout(function(){
    //Hier das tun, was du brauchst
}, 2000);

Beispiel hier ansehen: http://jsfiddle.net/9LZQp/

Dies unterbricht nicht die Ausführung Ihres Skripts, aber aufgrund der Tatsache, dass setTimeout() eine asynchrone Funktion ist, wird dieser Code

console.log("HALLO");
setTimeout(function(){
    console.log("DIES IST");
}, 2000);
console.log("HUND");

wird dies in der Konsole ausgeben:

HALLO
HUND
DIES IST

(beachten Sie, dass HUND vor DIES IST gedruckt wird)


Sie können den folgenden Code verwenden, um kurze Zeitintervalle zu simulieren:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

Jetzt, wenn Sie für 1 Sekunde pausieren möchten, verwenden Sie einfach:

sleep(1000);

Beispiel: http://jsfiddle.net/HrJku/1/

Bitte beachten Sie, dass dieser Code Ihr Skript für n Millisekunden beschäftigen wird. Dies stoppt nicht nur die Ausführung von JavaScript auf Ihrer Seite, sondern kann je nach Browserimplementierung die Seite möglicherweise vollständig unresponsive machen und möglicherweise den gesamten Browser unresponsive machen. Mit anderen Worten, dies ist fast immer das falsche Vorgehen.

CodeJaeger.com

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.

Powered by:

X