Promise.all waits for all promises to resolve and rejects if any reject. Use it to run independent async tasks in parallel and wait for all results.
Advanced answer
Deep dive
Expanding on the short answer — what usually matters in practice:
Context (tags): promises, async
Explain the "why", not just the "what" (intuition + consequences).
Trade-offs: what you gain/lose (time, memory, complexity, risk).
Edge cases: empty inputs, large inputs, invalid inputs, concurrency.
Examples
A tiny example (an explanation template):
// Example: discuss trade-offs for "what-does-promise.all-do-and-when-would-you-use-"
function explain() {
// Start from the core idea:
// Promise.all waits for all promises to resolve and rejects if any reject. Use it to run ind
}
Common pitfalls
Too generic: no concrete trade-offs or examples.
Mixing average-case and worst-case (e.g., complexity).