DEV Community

Cover image for Weekly Awesome JS KT Part-2: Promise.all() vs multiple awaits
Ishan Mishra
Ishan Mishra

Posted on

Weekly Awesome JS KT Part-2: Promise.all() vs multiple awaits

Imagine you have a case where you want to retrieve some information about a list of users, and for each user you have to hit the endpoint and await a promise, how will you do it? I came across a similar problem(I am giving a simplified version of the problem I came across not the full code), and the approach I took was something like this:

First I created a async function which handles all the logic of updating and getting a particular user from its id

const updateUser = async ({userId}:{userId:string})=>{

await updateUserDetails(userId)

}

userIds = [....]

// loop for each userId and update it
for(const id of userIds)
{
 await updateUser({userId: id})
}
Enter fullscreen mode Exit fullscreen mode

But there is a problem with this code, let me explain with a more simplified example:

const test1 = async () => {
  const delay1 = await Promise.delay(600); 
  const delay2 = await Promise.delay(600); 
  const delay3 = await Promise.delay(600); 
};

const test2 = async () => {
  await Promise.all([
  Promise.delay(600), 
  Promise.delay(600), 
  Promise.delay(600)]);
};

Enter fullscreen mode Exit fullscreen mode

Here test1 takes almost ~1800ms to run since it runs sync each promises whereas test2 takes ~600ms to runs since it runs all promises in parallel

So a faster version of the code snippet one would be something like this:

const updateUser = async ({userId}:{userId:string})=>{

await updateUserDetails(userId)

}

userIds = [....]

await Promise.all(userIds.map((userId)=>updateUser({userId})))

Enter fullscreen mode Exit fullscreen mode

Keep Exploring 🛥️


https://stackoverflow.com/questions/45285129/any-difference-between-await-promise-all-and-multiple-await

Top comments (0)