영진학생 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를 써서 더 직관적으로 만드는 것이 좋다고 한다.