Promise All
Promise All - Explanation
Problem Summary
Implement a simplified version of Promise.all.
Go to Problem →Detailed Explanation
이 문제는 **Promise.all**의 동작 원리를 이해하고 직접 구현하는 방법을 학습합니다. ## 핵심 개념: Promise.all 모든 Promise가 완료될 때까지 기다린 후 결과 배열을 반환합니다. ### 동작 방식 1. 모든 Promise가 성공 → 결과 배열 반환 2. 하나라도 실패 → 즉시 reject ### 구현 분석 ```javascript return new Promise((resolve, reject) => { const results = []; let completed = 0; promises.forEach((p, i) => { Promise.resolve(p).then(value => { results[i] = value; // 순서 유지! completed++; if (completed === promises.length) resolve(results); }).catch(reject); }); }); ``` ### 주요 포인트 - `results[i]`로 순서 유지 - `Promise.resolve(p)`로 비Promise 값 처리 - 완료 카운터로 모든 완료 확인 ### 실무 활용 ```javascript const [user, posts] = await Promise.all([ fetchUser(id), fetchPosts(id) ]); ``` 병렬 처리로 성능을 최적화할 수 있습니다.
Solution Code
function promiseAll(promises) {
return new Promise((resolve, reject) => {
const results = [];
let completed = 0;
if (promises.length === 0) resolve(results);
promises.forEach((p, i) => {
Promise.resolve(p).then(value => {
results[i] = value;
completed++;
if (completed === promises.length) resolve(results);
}).catch(reject);
});
});
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(n)
Grows linearly with input size
Space Complexity
O(n)
Uses memory proportional to input size