Today I was just looking into ways to simulate delay, sleep, pause, wait or such in JavaScript/jQuery. I’ve briefly looked into this topic before for locking a web page on timer. Here are some more thoughts on the topic. PHP has a sleep() function but JavaScript doesn’t as such. jQuery offers us both setTimeout which is similar to run a block of code after a specific time period. Well, this is because it’s useless you might say. But for simulating heavy processing and for misc performance measurements, it could be useful. So here’s how you can go about creating a sleep() in JavaScript, just a little code snippet I found somewhere.
Example of sleep function in js
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
Usage
Sleep for 1 second (1000 milliseconds).
PHP to JS
Great project – essentially converting PHP function logic to JavaScript. I saw they have converted PHP’s < href="http://www.php.net/manual/en/function.time-sleep-until.php">time_sleep_until into JavaScript function below.
function time_sleep_until (timestamp) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// % note: For study purposes. Current implementation could lock up the user's browser.
// % note: Expects a timestamp in seconds, so DO NOT pass in a JavaScript timestamp which are in milliseconds (e.g., new Date()) or otherwise the function will lock up the browser 1000 times longer than probably intended.
// % note: Consider using setTimeout() instead.
// * example 1: time_sleep_until(1233146501) // delays until the time indicated by the given timestamp is reached
// * returns 1: true
while (new Date() < timestamp * 1000) {}
return true;
}
//run
time_sleep_until(1233146501) // delays until the time indicated by the given timestamp is reached
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// % note: For study purposes. Current implementation could lock up the user's browser.
// % note: Expects a timestamp in seconds, so DO NOT pass in a JavaScript timestamp which are in milliseconds (e.g., new Date()) or otherwise the function will lock up the browser 1000 times longer than probably intended.
// % note: Consider using setTimeout() instead.
// * example 1: time_sleep_until(1233146501) // delays until the time indicated by the given timestamp is reached
// * returns 1: true
while (new Date() < timestamp * 1000) {}
return true;
}
//run
time_sleep_until(1233146501) // delays until the time indicated by the given timestamp is reached
Other sleepy stuff
May you could use a chained delay() function?
Read more: jQuery: Delay execution of any function
Or a setTimeout()…
var dotCounter = 0;
(function addDot() {
setTimeout(function() {
if (dotCounter++ < 10) {
$('#dots').append('.');
addDot();
}
}, 1000);
})();
(function addDot() {
setTimeout(function() {
if (dotCounter++ < 10) {
$('#dots').append('.');
addDot();
}
}, 1000);
})();
Read more: John Resig on How JavaScript Timers Work