I have searched/googled quite a few webpages on JavaScript sleep/wait... and there is no answer if you want JavaScript to "RUN, DELAY, RUN"... what most people got was either, "RUN, RUN(useless stuff), RUN" or "RUN, RUN + delayed RUN"...
I thought: here is a solution that works... but you have to chop up your running codes...: Yes, I know, this is just an easier to read refactoring... still...
Example 1:
<html> <body> <div id="id1">DISPLAY</div> <script> // JavaScript sleep by "therealdealsince1982"; copyrighted 2009 // setInterval var i = 0; function run() { // Pieces of codes to run if (i == 0){document.getElementById("id1").innerHTML= "<p>code segment " + i + " is ran</p>"; } if (i == 1){document.getElementById("id1").innerHTML= "<p>code segment " + i + " is ran</p>"; } if (i == 2){document.getElementById("id1").innerHTML= "<p>code segment " + i + " is ran</p>"; } if (i >2){document.getElementById("id1").innerHTML= "<p>code segment " + i + " is ran</p>"; } if (i == 5){document.getElementById("id1").innerHTML= "<p>all code segment finished running</p>"; clearInterval(t); } // End interval, stops run i++; // Segment of code finished running, next... } run(); t = setInterval("run()", 1000); </script> </body> </html>
Example 2:
<html> <body> <div id="id1">DISPLAY</div> <script> // JavaScript sleep by "therealdealsince1982"; copyrighted 2009 // setTimeout var i = 0; function run() { // Pieces of codes to run, can use switch statement if (i == 0){document.getElementById("id1").innerHTML= "<p>code segment " + i + " ran</p>"; sleep(1000);} if (i == 1){document.getElementById("id1").innerHTML= "<p>code segment " + i + " ran</p>"; sleep(2000);} if (i == 2){document.getElementById("id1").innerHTML= "<p>code segment " + i + " ran</p>"; sleep(3000);} if (i == 3){document.getElementById("id1").innerHTML= "<p>code segment " + i + " ran</p>";} //stops automatically i++; } function sleep(dur) {t=setTimeout("run()", dur);} // Starts flow control again after 'dur' run(); // Starts </script> </body> </html>
Example 3:
<html> <body> <div id="id1">DISPLAY</div> <script> // JavaScript sleep by "therealdealsince1982"; copyrighted 2009 // setTimeout var i = 0; function flow() { run(i); i++; // Code segment finished running, increment i; can put elsewhere sleep(1000); if (i == 5) {clearTimeout(t);} // Stops flow, must be after sleep() } function run(segment) { // Pieces of codes to run, can use switch statement if (segment == 0){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment == 1){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment == 2){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; } } function sleep(dur) {t=setTimeout("flow()", dur);} // Starts flow control again after 'dur' flow(); // Starts flow </script> </body> </html>
Example 4:
<html> <body> <div id="id1">DISPLAY</div> <script> // JavaScript sleep by "therealdealsince1982"; copyrighted 2009 // setTimeout, switch var i = 0; function flow() { switch(i) { case 0: run(i); sleep(1000); break; case 1: run(i); sleep(2000); break; case 5: run(i); clearTimeout(t); // Stops flow break; default: run(i); sleep(3000); break; } } function run(segment) { // Pieces of codes to run, can use switch statement if (segment == 0){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment == 1){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment == 2){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment " + segment + " is ran</p>"; } i++; // Current segment of code finished running, next... } function sleep(dur) {t=setTimeout("flow()", dur);} // Starts flow control again after 'dur' flow(); // Starts flow control for first time... </script> </body> </html>