Trusted answers to developer questions

What is the Javascript alternative to the sleep function?

Get Started With Machine Learning

Learn the fundamentals of Machine Learning with this free course. Future-proof your career by adding ML skills to your toolkit — or prepare to land a job in AI or Data Science.

widget

Unlike Java or Python, Javascript does not have a built-in sleep function. So, how might you be able to implement a method with the same functionality as the sleep function?

A simple way to create a delay in Javascript is to use the setTimeout method. The example below would log Hello, wait two seconds, and then log World. For many, this might be enough to do the trick.

console.log("Hello");
setTimeout(() => { console.log("World!"); }, 2000);

Still, the noticeable drawback is that setTimeout is an asynchronous method, meaning that the code below will log Hello, Goodbye!, and then, World!. This could be a problem for some of your programs if you want the program to print in the order Hello, World!, and Goodbye!.

console.log("Hello");
setTimeout(() => { console.log("World!"); }, 2000);
console.log("Goodbye!");

Here’s a better way to create a delay:

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function delayedGreeting() {
console.log("Hello");
await sleep(2000);
console.log("World!");
await sleep(2000);
console.log("Goodbye!");
}
delayedGreeting();

The sleep function above utilizes the setTimeout function to resolve a Promise after a specified number of milliseconds.

The asynchronous function allows us to return a Promise, and we use await to get the return value. With this, we can utilize the sleep method in the function to set up a delay.

Some things to know:

  • The method does not pause the entire program, only the async function

  • await only pauses the current async function

  • The ES6 feature Promise allows us to design this sleep function

RELATED TAGS

sleep()
javascript
threads
async/await

CONTRIBUTOR

Aaron Xie
Copyright ©2024 Educative, Inc. All rights reserved
Did you find this helpful?