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

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more