Sie sollten nicht nur versuchen, 5 Sekunden in Javascript anzuhalten. Das funktioniert nicht so. Sie können festlegen, dass eine Codefunktion in 5 Sekunden ausgeführt wird. Sie müssen jedoch den Code, den Sie später ausführen möchten, in eine Funktion einfügen, und der Rest Ihres Codes nach dieser Funktion wird sofort weiter ausgeführt.
Zum Beispiel:
function stateChange(newState) {
setTimeout(function(){
if(newState == -1){alert('VIDEO HAS STOPPED');}
}, 5000);
}
Aber wenn Sie Code wie diesen haben:
stateChange(-1);
console.log("Hello");
Die console.log()
Anweisung wird sofort ausgeführt. Es wird nicht warten, bis das Timeout in derstateChange()
Funktion . Sie können die Ausführung von Javascript nicht einfach für einen festgelegten Zeitraum anhalten.
Stattdessen muss sich jeder Code, für den Sie Verzögerungen ausführen möchten, innerhalb von befinden setTimeout()
Rückruffunktion befinden (oder von dieser Funktion aufgerufen werden).
Wenn Sie versucht haben, durch Schleifen "anzuhalten", haben Sie den Javascript-Interpreter im Wesentlichen für einen bestimmten Zeitraum "aufgehängt". Da Javascript Ihren Code nur in einem einzigen Thread ausführt, kann beim Schleifen nichts anderes ausgeführt werden (keine anderen Ereignishandler können aufgerufen werden). Das Schleifen, das darauf wartet, dass sich eine Variable ändert, funktioniert also nie, da kein anderer Code ausgeführt werden kann, um diese Variable zu ändern.