2017-01-19 5 views
0

Wie kann ich das tun? Wie kann ich die äußere Schleife verzögern, bis die innere for-Schleife beendet ist, wenn ich bedenke, dass ich jede innere Schleife für 2 Sekunden verzögern möchte? Ergebnis, das ich erreichen möchte:Wie kann ich innere for-Schleife verzögern und äußere for-Schleife machen, um zu warten, bis innere Schleife Iteration beendet?

äußere Schleife druckt in der Konsole: 0

äußere Schleife wartet, bis innere Schleife beenden wird.

innere Schleife druckt: 0, 1, 2 mit 2 Sekunden Verzögerung.

dann äußere Schleife druckt: 1.

äußere Schleife wartet, bis innere Schleife beenden wird.

innere Schleife druckt: 0, 1, 2 mit 2 Sekunden Verzögerung.

Und so weiter.

for (var i = 0; i < 3; i++) 
 
    { 
 
    alert(i); 
 
    for (var j = 0; j < 3; j++) 
 
     { 
 
     alert(j); 
 
     } 
 
    }

+0

Was Sie wirklich fragen, sind synchrone Timeouts, ja? – mhodges

+0

Siehe hier: http://StackOverflow.com/a/37563825/4987197 und hier: http://StackOverflow.com/a/1776729/4987197 – mhodges

+0

Verwenden Sie Rekursion, nicht Schleifen. Sie können dann leicht asynchron fortfahren. – Bergi

Antwort

0

Wie in Synchronous delay in code execution erwähnt können Sie eine Wartefunktion haben und es in Ihrem Code.

function wait(ms) { 
    var start = Date.now(), 
     now = start; 
    while (now - start < ms) { 
     now = Date.now(); 
    } 
} 

for (var i = 0; i < 3; i++) { 
    alert(i); 
    for (var j = 0; j < 3; j++) { 
    alert(j); 
    wait(2000); 
    } 
} 
Verwandte Themen