PDH 개발 공부
[JavaScript] 비동기 처리 3 (Callback, Promise, async) 본문
비동기 처리 방법 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