React

Promise 함수 (resolve, reject)

vamosdev12 2025. 4. 22. 17:41

 

1. 정의

- 미래에 완료될 비동기 작업의 최종 완료 또는 실패 결과를 나타내는 객체

 

 

2. 왜 사용하는가?

Javascript는 싱글 스레드에서 돌아가기 때문에, 시간이 오래 걸리는 비동기 작업(예: API 요청, 타이머, 파일 읽기 등)에 대해 결과가 오기까지 기다릴 수 있도록 하는 방법이 필요함. (기존에는 콜백 함수 구조를 이용했지만, '콜백지옥'이 발생할 수 있는데, Promise는 이를 해결해줌)

 

 

3. Promise의 상태

  1) pending : 아직 완료되지 않음

  2) fullfilled : resolve()가 호출됨 – 성공

  3) rejected : reject()가 호출됨 – 실패

 

 

4. new Promise()의 형태로 사용하는 이유

 - Promise는 클래스임.

 - 즉, Promise는 객체고, 내부적으로 상태를 가지고 있기 때문에 new 키워드로 인스턴스를 만들어야 함.

 

 

5. 사용 예시

function getNumber(fail = false) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (fail) {
        reject("실패!");
      } else {
        resolve(42);
      }
    }, 1000);
  });
}

// 사용 예
try {
  const num = await getNumber(false); // 42 반환
} catch (err) {
  console.error("에러 발생:", err);
}