Feb 2009
05 09:36am
I’ll make this short and quick. I’ve been searching the web for a Javascript sleep function that works and came across this. It was presented as a class but what I needed was just a function so I rewrote the code a bit. Here’s the end result of my Javascript sleep function which I named, well, jsleep.
function jsleep(s){
s=s*1000;
var a=true;
var n=new Date();
var w;
var sMS=n.getTime();
while(a){
w=new Date();
wMS=w.getTime();
if(wMS-sMS>s) a=false;
}
}
// how to use
alert('in the beginning there was a pause...');
jsleep(3);
alert('3 seconds after... the pause was gone.');
I’ve tested it in Google Chrome, Firefox 3 and Internet Explorer 7. Works like a charm.
Tags: javascript, javascript sleep, javascript sleep function
February 17th, 2009 at 2:51 pm
Hi Mike,
I couldn’t find anywhere to contact you so i thought i would do it through here. I know your blog is mainly on coding but noticed you posted some great tech posts such as the new mac video and thought a new video piece i am working on might be of interest to you. Its about a dysfunctional managers resistance to installing an ERP system. Although the video is really funny it does highlight some serious points.
http://www.k3scs.com/the-factory/
I thought it would point it out to you and if you have any feedback please let us know. Please also feel free to use the video.
Thanks
Mark
September 22nd, 2009 at 4:56 am
hi,
Thanks a lot for the code. I think lots of people are looking for this. Btw where do I find the class file for this?
regards,
Harish
October 22nd, 2009 at 7:31 pm
This is a terrible implementation. The while loop will completely dominate the CPU and hang the browser until sleep is done. On Firefox, if you sleep for longer than 5 or 10 seconds, this will cause an ugly warning dialog because the browser will think the script is stuck in an infinite loop.
There is no JavaScript sleep() function. (Which I find to be a huge flaw with the langauge.) Instead, you should use setTimeout(). Google “JavaScript sleep” to find what other people have said on this topic, but a loop that polls the current time is NOT what you want.
November 10th, 2009 at 4:54 am
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”….
So I ate some burgers and got thinking:::
here is a solution that works… but you have to chop up your running codes…:::
replace <.. with < to run..
//…………………………………..
//example1:
DISPLAY
//javascript sleep by “therealdealsince1982″; copyrighted 2009
//setInterval
var i = 0;
function run() {
//pieces of codes to run
if (i==0){document.getElementById(”id1″).innerHTML= “code segment “+ i +” is ran”; }
if (i==1){document.getElementById(”id1″).innerHTML= “code segment “+ i +” is ran”; }
if (i==2){document.getElementById(”id1″).innerHTML= “code segment “+ i +” is ran”; }
if (i >2){document.getElementById(”id1″).innerHTML= “code segment “+ i +” is ran”; }
if (i==5){document.getElementById(”id1″).innerHTML= “all code segment finished running”; clearInterval(t); } //end interval, stops run
i++; //segment of code finished running, next…
}
t=setInterval(”run()”,1000);
//………………………………
//example2:
DISPLAY
//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= “code segment “+ segment +” is ran”; }
if (segment==1){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
if (segment==2){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
if (segment >2){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
}
function sleep(dur) {t=setTimeout(”flow()”,dur);} //starts flow control again after dur
flow(); //starts flow
//……………………………….
//example3:
DISPLAY
//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= “code segment “+ segment +” is ran”; }
if (segment==1){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
if (segment==2){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
if (segment >2){document.getElementById(”id1″).innerHTML= “code segment “+ segment +” is ran”; }
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…