Ich bin neu in Javascript, und vor kurzem habe ich die Verwendung von SetTimeout auf 0 millis kennen gelernt. Ich versuche es zu implementieren, aber ich bekomme nicht, was erwartet wird. Nach meinem Wissen muss es warten, bis alle Ereignisse beendet sind, aber es verhält sich nicht erwartungsgemäß. Bitte sagen Sie mir, was ich vermisse oder wo ich falsch liege.Warum wird das setTimeout 0 nicht am Ende der Funktion ausgeführt
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test HTML</title>
</head>
<body>
<script src="js/index.js"></script>
</body>
</html>
index.js
(function(){
setTimeout(function() {
document.write("<p>Event 0 Processed !!</p>");
},0);
setTimeout(function() {
document.write("<p>Event 1 Processed !!</p>");
},1000);
setTimeout(function() {
document.write("<p>Event 2 Processed !!</p>");
},2000);
setTimeout(function() {
document.write("<p>Event 3 Processed !!</p>");
},3000);
})();
Ausgang
Event 0 Processed !!
Event 1 Processed !!
Event 2 Processed !!
Event 3 Processed !!
ich so etwas wie
erwartet wurdeEvent 1 Processed !!
Event 2 Processed !!
Event 3 Processed !!
Event 0 Processed !!
Danke :)
Sie meinten, Sie erwarteten das Ergebnis des Aufrufs von setTimeout (..., 1000) vor setTimeout (..., 0)? – csharpfolk
Mögliches Duplikat von [Asynchrone vs. synchrone Ausführung, was bedeutet das wirklich?] (Http://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean) – rottenoats
* Alle * Ihrer 'setTimeout'-Aufrufe sind asynchron. Sie werden alle zur "Warteschlange" hinzugefügt und ausgeführt, sobald die aktuelle Funktion beendet ist (und die Zeit abgelaufen ist). 0ms sollte vor 1000ms passieren. –