It's Sean!

UK freelance journalist, author
and copywriter Sean McManus

Printed from © Sean McManus.
Home > Articles > Webmaster resources > Javascript examples > Javascript delay

Javascript delay / wait / pause script

Some background on this Javascript code

My first programming language was Basic. There is a command to jump from one line of the program to another, called GOTO. I've heard it said that this command is never needed (in Basic) if you're writing structured programs and programming properly. Certainly, I can't think of a good exception.

I mention this because I wonder whether this Javascript delay script is a similar dark force that shouldn't ever be needed if you're programming well. I'll share it with you anyway and let you worry about the beauty of your code.

Setting events to occur after a delay

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

setTimeout(function() {alert('hello');},1250);

Want to see it in action? No problem.

And here's the code that pulls that stunt:

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

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">


function pausecomp(millis)
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);


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 my original 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.


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

<script language="javascript">

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


Get my website design book!

Book cover: Web Design in Easy Steps For more Javascript examples, and an introduction to HTML and CSS too, see my new book Web Design in Easy Steps. It takes you through the whole process of building a website, from planning and content creation, through designing your layout and navigation, building your site, publishing it and promoting it.

It includes walkthroughs on Flash and Dreamweaver, and chapters dedicated to adding a shopping cart, integrating with social networks, and content management systems (primarily Wordpress). It concludes with a look at SEO and understanding what your visitors do on your website (web analytics).

The book includes extensive full colour examples and is written in the easy-to-follow style that the author has used in his contributions to magazines including Internet Magazine, Internet Works, and Business 2.0.

Find out more about the Web Design in Easy Steps book here.

You can order it from Amazon here.