Promise는 JavaScript에서 비동기 작업을 처리하는 객체입니다.
비동기 작업이란, 코드가 순차적으로 실행되지 않고 동시에 여러 작업이 수행될 수 있는 상황을 의미합니다.
Promise의 상태 (State)
Promise는 다음 세 가지 상태를 가집니다:
대기 (pending): 초기 상태로, 아직 결과가 이행되지 않은 상태입니다.
이행 (fulfilled): 비동기 작업이 성공적으로 완료된 상태입니다.
거부 (rejected): 비동기 작업이 실패한 상태입니다.
Promise 생성자
Promise 생성자는 new Promise()를 사용하여 생성됩니다.
이 생성자는 콜백 함수를 인자로 받습니다.
이 콜백 함수는 두 개의 매개변수를 가지며, resolve와 reject 함수입니다.
resolve: 정상적인 결과 값을 반환하고 Promise를 이행 상태로 만듭니다.
reject: 예외가 발생하거나 오류가 있는 경우 이를 처리하고 Promise를 거부 상태로 만듭니다.
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
const result = prompt("hello를 입력해주면 선물을 줄께");
if (result === "hello") {
resolve("선물");
} else {
reject("땡!");
}
}, 2000);
});
then(), catch(), finally()
myPromise
.then((result) => {
console.log("결과 : " + result);
})
.catch((error) => {
console.log("결과 : " + error);
})
.finally(() => {
console.log("성공이든 실패든 항상 출력됩니다!");
});
이제 위의 코드를 실행하면, 비동기 작업이 정상적으로 처리되면 결과가 출력되고, 문제가 발생하면 에러 메시지가 출력됩니다.
마지막으로 finally 블록은 항상 실행됩니다.