따꿍의 프로젝트

[프론트] Promise의 3단계에 대해 서술하시오 본문

오늘의 개발지식/기술면접 준비

[프론트] Promise의 3단계에 대해 서술하시오

공장 주인 따꿍 2026. 4. 24. 16:39

한줄 정의

Promise는 비동기 작업을 완수하는데 사용하는 JS 내장 객체입니다.

JS 컴파일러 자체가 싱글 스레드라 자체적으로 비동기를 지원하지 않는데,

이를 위해 JS는 이벤트 루프, Web API, 그리고 Task Queue를 사용합니다. 

이러한 흐름에서 Promise는 비동기 결과를 다루기 쉽게 하는 객체입니다. 

 

이러한 Promise는 3가지 단계가 있는데, 바로

Pending, FulfilledRejected 단계입니다.

executor 함수 안의 resolve와 reject를 통해서 상태를 변경하며, 한번 상태가 결정되면 이후에 변하지 않습니다.

 

처음에는 Pending(대기 상태)이고,
작업이 성공하면 Fulfilled, 실패하면 Rejected 상태로 전이됩니다.

이러한 Promise의 상태는 Heap안에 저장된  Promise 객체 안에 기록됩니다. 

 

추가 설명

Pending 단계는 아직 작업이 끝나지 않은, 대기 상태를 지칭합니다. 

아직 resolve/reject가 호출되지 않 아직 then 안의 콜백함수가 실행되지 않고 기다립니다.

 

Fulfilled 단계는 비동기 작업을 성공적으로 완수한 상태를 지칭합니다. 

Promise 콜백함수 안에 resolve()가 fulfill 상태를 발동하고 결과값을 전달합니다. 

resolve로 전달된 값은 then을 통해 전달받을 수 있습니다. 

 

Rejected 단계는 비동기 작업을 실패한 상태를 지칭합니다. 

Promise 콜백 함수 안에 reject가 rejected 상태를 발동하고 에러를 전달합니다

전달된 에러는 catch로 받습니다.

const fetchSomething = () =>
  new Promise((res, rej) => {
    if (실패) {
      rej(error);
      return;
    }
    res(data);
  });

fetchSomething().then((data)=> {console.log(data)}
    .catch((e) => {console.error(e)})