Back to Async / PromisesMedium
Exercise 2: Run in Parallel (Promise.all)
Problem Statement
Function `parallel(tasks)` banao jahan tasks array of functions (returning promises) ho. Saare parallel run karo and results return karo.
Sample Output:
await parallel([() => Promise.resolve(1), () => Promise.resolve(2)]) => [1, 2] await parallel([() => fetchUser(), () => fetchPosts()]) => [userData, postsData]
Solution
const parallel = (tasks) => Promise.all(tasks.map((t) => t()));Explanation
Overall Goal:
- Multiple async tasks ko parallel me run karna.
- Sabhi complete hone ka wait karna.
Single Line Solution:
const parallel = (tasks) => Promise.all(tasks.map((t) => t()));
Part 1: Map tasks
tasks.map((t) => t())map→ har task function ko call karta hai.t()→ function execute → Promise return.- Result: array of Promises.
Part 2: Wait for all
Promise.all([...])Promise.all→ sabhi Promises complete hone ka wait karta hai.- Agar sabhi success → array of results return.
- Agar koi fail → immediately reject (first error).
Example:
parallel([() => fetchUser(), () => fetchPosts()])- Dono API calls parallel me start → dono complete → results return.
Real world:
- Dashboard: multiple APIs parallel me call (faster).
- Data loading: user + posts + comments ek saath.
- Performance: sequential se faster (wait nahi karna).