💻JavaScript/코딩테스트
timeout function
영진학생
2025. 2. 5. 10:43
문제 설명
제한 시간 내에 Promise가 완료되면 resolve, 아니면 "timeout"으로 reject하는 timeOut 함수를 만드세요.
제한 조건
- timeOut 함수는 첫 번째 인자로 받은 Promise가, 두 번째 인자로 받은 시간(s)안에 끝나지 않으면 "timeout"을 reject하는 Promise를 반환해야 합니다.
- Promise.race를 사용하세요.
📄 문제
async function timeOut(promise, ms) {}
💻 작성한 코드
async function timeOut(promise, ms) {
return Promise.race([
promise,
new Promise((_, reject) => setTimeout(() => reject("timeout"), ms))
]);
}
📚 배운 점
- Promise.race([promise1, promise2])는 주어진 promise들 중에서 가장 먼저 완료되는 것을 반환하는 메서드다.
- setTimeout()은 특정 시간 이후에 함수를 실행시키는 메서드이다. 그래서 setTimeout 과 promise를 결합하면 특정 시간이 지났을 때 자동으로 reject 되도록 만들수가 있다!
- JS에서 _(underscore)는 "나는 이 값을 쓰지 않을꺼야" 라는 의미로 사용된다. new Promise(resolve, reject)라고 사용 해도 코드는 작동하지만 지금은 resolve를 쓸 일이 없기 때문에 underscore를 써서 더 직관적으로 만드는 것이 좋다고 한다.