promise

Hoo·2023년 4월 13일
0

비동기 작업이 가질수 있는 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)
}) 

//결과값 : 작업성공 양수
profile
기록하는중입니다.

0개의 댓글