비동기 작업이 가질수 있는 3가지 형태
- Pending : 대기상태
- Fulfilled : 성공 - 대기상태에서 파생
- Rejected : 실패 - 대기상태에서 파생
promise란 ?
- 프로미스는 자바스크립트 비동기 처리에 사용되는 객체입니다. 여기서 자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성’을 의미한다.
//2초 뒤에 전달받은 값이 양수인지 음수인지 판단하는 예제
function isPositive(number , resolve, reject) {
setTimeout(() => {
if (typeof number === 'number'){
//성공 -> resolve
resolve(number >= 0 ? "양수" : "음수")
} else {
// 실패 -> reject
reject ("주어진 값이 숫자형이 아닙니다.")
}
}, 2000)
}
isPositive([], // <- 전달값에 따라 값이 바뀜
(res) =>{
console.log("성공 : " + res);
}, (err)=> {
console.log("실패 : " + err);
});
function isPositiveP(number) {
const executor = (resolve, reject) => { //executor란 실행자
setInterval(() => {
if (typeof number === 'number'){
//성공 -> resolve
resolve(number >= 0 ? "양수" : "음수")
} else {
// 실패 -> reject
reject ("주어진 값이 숫자형이 아닙니다.")
}
}, 2000);
};
const asyncTask = new Promise(executor); // 프로미스 객체를 생성하면서 프로스미스으 객체로 executor 를 넘겨주면 자동으로 executor를 실행한다.
return asyncTask;
}
const res = isPositiveP(101);
res.then( (res) => {
console.log("작업성공 : " , res)
}).catch( (err)=> {
console.log("작업실패 : " , err)
})
//결과값 : 작업성공 양수