Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

sleep()
javascript
threads
async/await

What is the Javascript alternative to the sleep function?

Aaron Xie

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

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

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring