Promise Race

Promise Race - Explanation

보통 비동기 O(n) O(1)

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

solution.js
function promiseRace(promises) {
  return new Promise((resolve, reject) => {
    promises.forEach(p => {
      Promise.resolve(p).then(resolve).catch(reject);
    });
  });
}

Key Concepts from This Problem

1. Promise.race
2. 경쟁 조건
3. 첫 번째 완료
4. 타임아웃 패턴

Common Mistakes

빈 배열은 영원히 pending 상태입니다
모든 Promise가 실행되지만 첫 결과만 사용됩니다
나머지 Promise 취소 기능은 없습니다

Hints

Hint 1: 첫 번째로 완료되는 Promise만 처리하세요.

Complexity Analysis

Time Complexity

O(n)

Grows linearly with input size

Space Complexity

O(1)

Uses almost no additional memory

Related Tags

#비동기 #Promise #race