따꿍의 프로젝트
[프론트] Promise의 3단계에 대해 서술하시오 본문
한줄 정의
Promise는 비동기 작업을 완수하는데 사용하는 JS 내장 객체입니다.
JS 컴파일러 자체가 싱글 스레드라 자체적으로 비동기를 지원하지 않는데,
이를 위해 JS는 이벤트 루프, Web API, 그리고 Task Queue를 사용합니다.
이러한 흐름에서 Promise는 비동기 결과를 다루기 쉽게 하는 객체입니다.
이러한 Promise는 3가지 단계가 있는데, 바로
Pending, Fulfilled와 Rejected 단계입니다.
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)})
'오늘의 개발지식 > 기술면접 준비' 카테고리의 다른 글
| [프론트] 브라우저가 작동하는 방식을 서술하시오 (0) | 2026.04.24 |
|---|---|
| [프론트] Event 버블링과 캡쳐링을 서술하고 이를 방지하기 위한 방법을 서술하세요 (0) | 2026.04.24 |
| [프론트] Lexical Scope의 개념과 특성에 대해 설명하시오 (0) | 2026.04.17 |
| [프론트] JS에서 this 키워드의 사용과 그 특성에 대해 설명하세요 (0) | 2026.04.17 |
| [프론트] var, let, const를 서로 비교하기 (TDZ와 호이스팅) (0) | 2026.04.13 |
