JavaScript에서 Promise의 상태
Promise는 세 가지 상태 중 하나에 있을 수 있습니다. 생성 시 Promise는 대기 중(pending) 상태에 있으며, 이후 이행됨(fulfilled) 상태가 되어 결과를 반환하거나, 거부됨(rejected) 상태가 되어 실패 이유를 반환할 수 있습니다. 다음 코드를 실행하여 한 상태에서 다른 상태로의 전환을 확인할 수 있습니다:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // true 또는 false로 설정하세요
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // 매초 Promise를 콘솔에 출력합니다
}, 1000);
fulfilled 및 rejected 상태는 변경 불가능합니다: Promise가 이러한 상태 중 하나로 전환되면 다른 상태로 다시 전환될 수 없습니다. 예제를 통해 살펴보겠습니다. 다음 코드에서 reject 호출이 먼저 발생하므로 resolve 호출은 무시됩니다:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
일정 시간 후 성공적으로 이행되는 Promise를 만드세요. 콘솔에 출력하고 초기 상태와 완료된 상태를 조사하세요.
일정 시간 후 실패로 이행되는 Promise를 만드세요. 콘솔에 출력하고 초기 상태와 완료된 상태를 조사하세요.