// promise
// 비동기 작업을 효율적으로 처리할 수 있도록 도와주는 자바스크립트의 내장 객체
// promise란 비동기 작업 실행, 상태 관리, 결과 저장, 병렬 실행, 다시 실행 등의 기능을 제공해주는 객체
// promise는 대기(비동기 작업 진행 중), 성공(비동기 작업 성공적으로 마무리), 실패(비동기 작업이 실패된 상태)로 나뉜다.
// 비동기 상황이 대기(pending)였다가 성공 상태로 바뀌는 것을 resolve (해결) 되었다.
// 비동기 상황이 대기였다가 실패 상태로 바뀌는 것을 reject(거부) 되었다.
function add10(num) {
const promise = new Promise((resolve, reject) => {
// 비동기 작업을 진행할 코드
// executor
setTimeout(() => {
if (typeof num === 'number') {
resolve(num + 10)
} else {
reject("num이 숫자가 아닙니다.")
}
}, 2000);
});
return promise;
};
add10(0)
.then((result) => {
console.log(result);
return add10(result);
})
.then((result) => {
console.log(result);
return add10(undefined);
})
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error);
})
// 진심 비효율적인 코드다.