Promise with Timeout
Promise with Timeout - Explanation
Problem Summary
Write a function that wraps a promise with a timeout.
Go to Problem →Detailed Explanation
이 문제는 **Promise.race**를 활용하여 타임아웃을 구현하는 방법을 학습합니다. ## 핵심 개념: Promise 타임아웃 지정된 시간 내에 완료되지 않으면 실패 처리합니다. ### 구현 ```javascript function withTimeout(promise, ms) { const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), ms) ); return Promise.race([promise, timeout]); } ``` ### 동작 원리 1. 타임아웃 Promise 생성 (ms 후 reject) 2. Promise.race로 경쟁 3. 원래 Promise가 먼저 완료 → 성공 4. 타임아웃이 먼저 → 실패 ### 시각화 ``` 원본: ----완료----> 타임아웃: --X (reject)--> race: 타임아웃이 먼저 → Error('Timeout') ``` ### 실무 활용 ```javascript try { const data = await withTimeout(fetch(url), 5000); } catch (e) { if (e.message === 'Timeout') { console.log('요청 시간 초과'); } } ``` 타임아웃은 네트워크 요청에서 필수적인 패턴입니다.
Solution Code
function withTimeout(promise, ms) {
const timeout = new Promise((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms)
);
return Promise.race([promise, timeout]);
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(1)
Constant time regardless of input size
Space Complexity
O(1)
Uses almost no additional memory