티스토리 뷰

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);  
        })
    })    
}

여기서 중요한 부분은 컨트롤 함수의 asyncpromise-await

promise-await를 통해 쿼리가 완료될 때 까지 기다렸다가 값을 가져오고 다음 스텝으로 넘어갈 수 있게 된다.

'spring memo' 카테고리의 다른 글

[javascript] image resize  (0) 2019.10.24
input에 전화번호 하이픈(-)넣기  (1) 2019.10.24
web에서 ftp연결  (0) 2019.10.24
map <-> json으로 변환  (0) 2018.08.29
scope 데이터 바인딩  (0) 2018.08.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함