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);
}
'React' 카테고리의 다른 글
forwardRef : 컴포넌트 외부에서 내부 요소 조작, 트리거 하기 (0) | 2025.05.20 |
---|---|
배열의 요소마다 await 적용 시, for ~ of 사용(.map과 비교) (0) | 2025.05.14 |
React에서 동기 / 비동기, async / await (0) | 2025.04.22 |
함수 선언 방식에 따른 차이 (0) | 2025.03.06 |