Javascript – Delay / Wait / Pause routine

Setting events to occur after a delay

This is the right way to make something happen after a delay, using setTimeout to trigger an alert after 1250 milliseconds.

setTimeout("alert('hello')",1250);

Want to see it in action? No problem.

And here's the code that pulls that stunt:

<form>
<input type="button" value="Push this button to open an alert box in 1250 milliseconds" onClick="setTimeout('alert(\'hello\')',1250);">
</form>

That's the elegant way to handle delays, pauses and waiting in Javascript. Your teacher would be proud of you.

Setting a Javascript program to wait

The routine above doesn't stop the Javascript routine from executing. It just sets up an event to happen later.

But sometimes you find yourself thinking: It would be so much easier if I could just get Javascript to wait for a bit here and then carry on as before.

It's a bit naughty, but I've written a script that does just that.

Note: This script is not a good example of how to use Javascript. It consumes a huge amount of CPU power just going round in circles for a predetermined amount of time. You really should be using the technique above in nearly all cases, but this script can be handy for prototyping.

<script language="javascript"> // www.sean.co.uk 
function pausecomp(millis) 
{ 
var date = new Date(); 
var curDate = null; 
do { curDate = new Date(); } 
while(curDate-date < millis); 
} </script>

Call the routine pausecomp(x) where x is the number of milliseconds you would like the computer to pause.

Many thanks to Michael Andrews who adapted this code for seconds to make it work for milliseconds and Artur Kraft who sent me this code, which is more elegant than my original solution was. Thanks also to André Pirard for untwisting the variable declarations.

You're welcome to use this script on your site and to adapt it to suit.

Update

Pavel Bakhilau has ed me with a more concise version of the script:

<script language="javascript">

function pausecomp(ms) {
ms += new Date().getTime();
while (new Date() < ms){}
}

</script>
SOURCE

LINK

LANGUAGE
ENGLISH