
const myPromise = new Promise((resolve,reject) => {
if(성공){
resolve("성공 결과");
}else{
reject("에러 발생");
}
});
resolve(value): 성공 시 호출 -> then()으로 전달reject(error): 실패 시 호출 -> catch()로 전달myPromise
.then(result => {
console.log(result); // 성공: '성공 결과'
})
.catch(error => {
console.error(error); // 실패: '에러 발생'
})
.finally(() => {
console.log('항상 실행됨');
});
then() : 성공 시 실행catch() : 실패 시 실행finally() : 성공/실패 상관없이 항상 실행async/await와 함께 쓰이면 더 직관적function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('데이터 가져오기 성공!');
}, 1000);
});
}
fetchData()
.then(data => console.log(data)) // '데이터 가져오기 성공!'
.catch(error => console.error(error));
부가 질문
.then 실행.catch가 호출, 즉시 실패 상태로 전환Promise.all([promise1, promise2, promise3])
.then(results => {
console.log(results); // [promise1 결과, promise2 결과, promise3 결과]
})
.catch(error => {
console.error(error); // 하나라도 실패하면 여기로!
});
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
const p3 = Promise.resolve(3);
Promise.all([p1, p2, p3])
.then(results => {
console.log(results); // [1, 2, 3]
})
.catch(error => {
console.error(error);
});
const p1 = Promise.resolve(1);
const p2 = Promise.reject('에러 발생!');
const p3 = Promise.resolve(3);
Promise.all([p1, p2, p3])
.then(results => {
console.log(results); // 실행 안 됨
})
.catch(error => {
console.error(error); // '에러 발생!'
});
Promise.all과 비슷하게 여러 Promise를 동시에 실행[
{ status: 'fulfilled', value: 성공값 },
{ status: 'rejected', reason: 실패이유 },
...
]
const p1 = Promise.resolve(1);
const p2 = Promise.reject('에러 발생!');
const p3 = Promise.resolve(3);
Promise.allSettled([p1, p2, p3])
.then(results => {
console.log(results);
});
[
{ status: 'fulfilled', value: 1 },
{ status: 'rejected', reason: '에러 발생!' },
{ status: 'fulfilled', value: 3 }
]