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).