Promise Race
Promise Race - Explanation
Problem Summary
Implement a simplified version of Promise.race.
Go to Problem →Detailed Explanation
이 문제는 **Promise.race**의 동작 원리를 이해하고 직접 구현하는 방법을 학습합니다. ## 핵심 개념: Promise.race 가장 먼저 완료되는 Promise의 결과를 반환합니다. ### 동작 방식 1. 가장 먼저 성공한 Promise → resolve 2. 가장 먼저 실패한 Promise → reject 3. 첫 번째 결과만 사용 (나머지는 무시) ### 구현 분석 ```javascript return new Promise((resolve, reject) => { promises.forEach(p => { Promise.resolve(p).then(resolve).catch(reject); }); }); ``` ### 왜 이렇게 간단한가? - 첫 번째 resolve/reject가 호출되면 상태가 변경됨 - Promise는 한 번만 resolve/reject 가능 - 이후 호출은 무시됨 ### 실무 활용 ```javascript // 타임아웃 구현 Promise.race([ fetch(url), timeout(5000) ]); // 가장 빠른 서버 선택 Promise.race([ fetchFromServer1(), fetchFromServer2() ]); ``` race는 타임아웃이나 경쟁 조건에 유용합니다.
Solution Code
function promiseRace(promises) {
return new Promise((resolve, reject) => {
promises.forEach(p => {
Promise.resolve(p).then(resolve).catch(reject);
});
});
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(n)
Grows linearly with input size
Space Complexity
O(1)
Uses almost no additional memory