spring memo
nodejs 비동기 문제
고랑이.
2019. 10. 24. 14:43
nodejs를 접하기 시작하면서 '비동기'에 관한 문제는 지속적으로 발생하였다.
구글링을 하면서 어찌저찌 해결은 했는데
제대로 하고 있는지는 모르겠지만 일단 킵.
//비동기 함수를 컨트롤하는 함수 *async*
exports.control_function = async function (req, res) {
var functionA = await function_A(req);
var functionB = await function_B(req);
result_arr['resultA'] = functionA;
result_arr['resultB'] = functionB;
res.send(result_arr);
}
function function_A(req){
var query = util.format(queryA);
var request = new mssql.Request(pool);
return new Promise(function(resolve, reject){
console.log(query);
request.query(query, function(err, result){
if(err) throw err;
resolve(result.recordset);
})
})
}
function function_B(req){
var query = util.format(queryB);
var request = new mssql.Request(pool);
return new Promise(function(resolve, reject){
console.log(query);
request.query(query, function(err, result){
if(err) throw err;
resolve(result.recordset);
})
})
}
여기서 중요한 부분은 컨트롤 함수의 async와 promise-await
promise-await를 통해 쿼리가 완료될 때 까지 기다렸다가 값을 가져오고 다음 스텝으로 넘어갈 수 있게 된다.