PDH 개발 공부

[JavaScript] 비동기 처리 3 (Callback, Promise, async) 본문

카테고리 없음

[JavaScript] 비동기 처리 3 (Callback, Promise, async)

IFBB 2021. 7. 19. 16:16

비동기 처리 방법 1 (CallBack 함수를 직접 정의하고 사용)

const ex01 = function(param ,callback){
    // 비동기 코드
    // ex) 파일시스템 접근 , 네트워크 통신 , Sql to DB

    setTimeout(() => {
        if(param == 'param-data'){
            callback(null , 'ok')
        }
        else{
            callback(new Error('fail'))
        }
    }, 1000);


}
if(require.main == module){



// test 01 
ex01("param-data" , function(err , res){
      if(err){
          console.error(err);
      }else{
          console.log(res);
      }

});
console.log("waits.....")

// test 02
ex01("param-error" , function(err , res){
    if(err){
        console.error(err);
    }else{
        console.log(res);
    }

});
console.log("waits.....")






}
else{
    module.exports = ex01
}
  • ex01 함수를 정의 하여 내부에 CallBack함수를 사용하여 값을 처리 하는 방식

비동기 처리 방법 2 (Promise 를 사용하여 처리)

const ex02 = function(param){

    return new Promise(function(resolve, reject){
  // 비동기 코드
    // ex) 파일시스템 접근 , 네트워크 통신 , Sql to DB

    setTimeout(() => {
        if(param == 'param-data'){
            resolve('ok')
        }
        else{
            reject(new Error('fail'))
        }
    }, 2000);

    })



}



if(require.main == module){



// test 01 
ex02("param-data").then(function(res){
  console.log(res);
})


// test 02
ex02("param-error").catch(function(err){

    console.log(err);

})

console.log("waits.....")

}
else{
    module.exports = ex02;

}
  • resolve , reject 를 통해 수신이 되었는지 , 실패 했는지 파악하여 처리하는

비동기 처리 방법 3 (async , await 를 사용하여 처리)

const ex02 = require('./ex02')
const ex03 = async function(param) {
    try{
        const res = await ex02(param);
        console.log(res);
    }
    catch(err){
         console.error(err.message);
    }
}

if(require.main == module){

    ex03('param-data');

     ex03('param-error');

}else{
    module.exports = ex03;
}

  • function 정의 하기전 async 를 붙여주고 비동기로 호출할 객체에 await를 붙여 준뒤 파라미터를 보내준다.
Comments