Promise란 무엇인가요?
Promise는 자바스크립트에서 비동기 작업의 최종 완료 또는 실패를 나타내는 객체입니다. '미래의 어떤 시점에 결과를 약속하는 객체'라고 이해할 수 있습니다.
자바스크립트는 기본적으로 한 번에 하나의 작업만 처리하는 싱글 스레드(Single Thread) 언어입니다. 파일 읽기, 네트워크 요청과 같은 시간이 오래 걸리는 작업을 처리할 때, 이 작업이 끝날 때까지 기다리면 다음 코드를 실행할 수 없게 됩니다. 이때 Promise가 등장하여, 이런 비동기 작업을 효율적으로 처리할 수 있게 도와줍니다.
Promise의 세 가지 상태
Promise는 생성된 후 다음 세 가지 상태 중 하나에 있게 됩니다.
- Pending (대기): 비동기 작업이 아직 완료되지 않은 초기 상태입니다.
- Fulfilled (이행): 비동기 작업이 성공적으로 완료되었고, 결과 값을 반환한 상태입니다.
- Rejected (거부): 비동기 작업이 실패했고, 오류(Error)를 반환한 상태입니다.
!
Promise 사용 방법
Promise는 주로 then(), catch(), finally() 메서드와 함께 사용됩니다.
1. then(onFulfilled, onRejected)
then() 메서드는 Promise가 성공적으로 완료되었을 때(Fulfilled) 실행될 콜백 함수를 등록합니다.
const myPromise = new Promise((resolve, reject) => {
// 비동기 작업 수행 (예: 네트워크 요청)
const success = true;
if (success) {
resolve("작업 성공!"); // 성공 시 resolve 호출
} else {
reject("작업 실패!"); // 실패 시 reject 호출
}
});
myPromise.then(message => {
console.log("성공:", message); // "작업 성공!" 출력
});
2. catch(onRejected)
catch() 메서드는 Promise가 실패했을 때(Rejected) 실행될 콜백 함수를 등록합니다. 이는 then(null, onRejected)와 동일합니다.
myPromise.catch(error => {
console.log("오류:", error); // "작업 실패!" 출력
});
3. finally()
finally() 메서드는 Promise의 성공 여부와 관계없이 작업이 최종적으로 완료되었을 때 실행됩니다. 주로 리소스 정리(예: 로딩 상태 해제)에 사용됩니다.
myPromise.finally(() => {
console.log("Promise 작업이 종료되었습니다.");
});
async/await와 Promise
async와 await 키워드는 **Promise를 더 쉽게 다루기 위한 문법적 설탕(Syntactic Sugar)**입니다. 이 둘은 내부적으로 Promise를 기반으로 동작합니다. await는 Promise가 완료될 때까지 기다렸다가 그 결과를 반환하므로, 비동기 코드를 동기 코드처럼 직관적으로 작성할 수 있게 해줍니다.
'프로그래머로의 여정' 카테고리의 다른 글
| 소프트웨어 개발 과정에서 툴체인(Toolchain)이란? (2) | 2025.08.07 |
|---|---|
| OpenAI API에서의 choices (0) | 2025.08.07 |
| 라우팅(Routing)과 리스너(Listener) (0) | 2025.08.05 |
| ipcRenderer.on(channel, listener)에서 channel (0) | 2025.08.05 |
| 렌더링(Rendering)이란? (3) | 2025.08.04 |