Engineer bro!
Sun Feb 20 2022 (1 year ago)
Engineer by mistake!
I am a software engineer by passion
The aim of building a sleep function is to allow the program to wait for a specified amount of time before executing the next line. The sleep function has many use cases, as you want to execute another service if the previous service takes more time, etc.
JavaScript always provides a way to wait at some line number before moving on to the next line using async/await
. We'll also use the same concept.
Think what
await
does.
Consider the below code
async function test(){
console.log("Before await");
await someService(..);
console.log("After await");
}
If you are familiar with async/await
, then you might have guessed that the above code will first log Before await
. Then it'll wait for the promise returned by someService
to resolve/reject. Then it'll log After await
.
So, await
wait for the promise to either resolve or reject.
Why not we can use this concept to build a sleep function, which will return a promise and resolve after specified amount of time.
// ms => milliseconds
function sleep(ms) {
// create and return a Promise
return new Promise((resolve) => {
// resolve the Promise after specified amount of time(ms)
setTimeout(resolve, ms);
});
}
async function test() {
console.log("Before sleep() -> ", new Date().toLocaleTimeString());
await sleep(1000); // wait for resolve to be called.
console.log("After sleep() -> ", new Date().toLocaleTimeString());
}
test();
// output
Before sleep() -> 7:57:34 pm
After sleep() -> 7:57:35 pm
You can see, currently sleep
function consists of 5 lines, we can reduce the number of lines.
const sleep = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms));
};
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
© 2021 dsabyte. All rights reserved