주어진 시간 이내에 응답이 없을 경우 Promise를 reject하는 방법

가장 간단한 방법은 setTimeout 함수를 사용하여 일정 시간이 지난 뒤에 reject를 호출하는 것입니다. 아래의 예제 코드를 살펴보세요.

function timeoutPromise(delay) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error('응답 시간 초과'));
    }, delay);
  });
}

function makeRequest() {
  return new Promise((resolve, reject) => {
    // 비동기 작업을 처리하는 코드 작성
    // 예를 들어, AJAX 요청을 보내거나 데이터를 가져오는 등의 작업
    
    // 응답을 받지 못하는 경우 Promise reject
    timeoutPromise(5000).then(() => {
      reject(new Error('응답 시간 초과'));
    });
    
    // 응답을 받았을 경우 Promise resolve
    // 예를 들어, AJAX 요청에 대한 처리를 진행하는 코드
    // resolve(data);
  });
}

makeRequest()
  .then((response) => {
    console.log('응답 받음:', response);
  })
  .catch((error) => {
    console.error(error);
  });

위의 코드에서 timeoutPromise 함수는 주어진 시간(delay) 이후에 Promise를 reject하도록 구현되어 있습니다. makeRequest 함수에서 비동기 작업을 처리하는 도중에 일정 시간이 지났는데도 응답을 받지 못한 경우 timeoutPromise를 호출하여 Promise를 reject합니다.

위 예제 코드를 실행하면, makeRequest 함수가 응답을 받지 못한 상황에서 Promise가 reject되고 catch 블록에서 에러가 처리되는 것을 확인할 수 있습니다.

이 방법을 사용하면 주어진 시간 이내에 응답이 없을 경우 Promise를 reject할 수 있습니다. 이를 활용하여 비동기 작업에 timeout 기능을 추가하면 사용자 경험을 향상시킬 수 있습니다.

#javascript #promise