티스토리 뷰

Develop/Nodejs

Node.js Callback에 관한 고찰

새내기 whitelife 2016.05.30 21:46

Node.js로 개발한다 라고 말한다면, 누구나 난항을 겪게 된다. 한 번쯤은 들어봤을 것이다. Callback Hell에 관한 이야기이다.


asncFunction1(function(err, result) {
  asncFunction2(function(err, result) {
    asncFunction3(function(err, result) {
      asncFunction4(function(err, result) {
        asncFunction5(function(err, result) {
          // do something useful 
        })
      })
    })
  })
})


위 그림처럼 너무 많아져서 좌절하는 상황을 빈번하게 맞닥뜨리게 된다. 결국 키보드에 손을 놓고, 쉴 수밖에 없다.


무턱대고 라이브러리만 사용하다 보면, 순간 흐름을 놓치는 경우, 아무것도 할 수 없게 된다.
아래 주소는 2012년에 작성된 글인데, 설명이 잘 되어 있어서, 자주 보던 글이다.


주소 - http://book.mixu.net/node/ch7.html


흔히 사용하는 Series, Parallel에 관해 설명되어 있다. 한 번씩 따라 해본다면, 많은 도움이 될 것이다. 취향에 따라 Promise, Async 라이브러리로 나뉘는 것 같다. 두 가지 라이브러리를 다 사용해 보았지만, 결국 협업을 하거나, 인수인계를 하는 시점에서 어려움을 겪었다. 어떤 식으로 개발을 해야 쉽게 만들까.


입문자들은 Express.js Framework를 많이 경험한다. 책에 나오는 단골손님이기 때문이다.


function do(param, next) {

    // logic...

    next();
}


위와 같은 형태로 함수는 구성된다. 오히려 직관적이기 때문에 조금 응용해봤다.


function doA() {

    Model.getContent(param, function(err, data) {

        doB();
    });
}

function doB() {

    Model.getContent(param, function(err, data) {

        doC();
    });
}

function doC() {

    console.log('finish');
}

doA();


직접 필요한 함수를 호출해주는 방식이다. Callback 중첩도 되지 않으면서, 순차적으로 코드를 읽을 수 있다. 협업하면서 의견을 나누어 봤지만, 라이브러리를 사용해서 했을 때보단 진입장벽이 낮아진 것 같았다. 먼저 위와 같은 방법으로 경험하고, 필요한 때에만 라이브러리를 사용하면 개발이 한결 편해질 것 같다는 생각이 든다.



신고

'Develop > Nodejs' 카테고리의 다른 글

Node.js 설치하기  (0) 2017.03.26
Node.js certificate has expired Error 해결하기  (0) 2016.06.17
Node.js Callback에 관한 고찰  (0) 2016.05.30
Node.js v6 버전 업그레이드 후기  (0) 2016.05.29
NPMv3 사용하기  (0) 2016.04.04
Node.js와 ECMAScript 2015 (ES6)  (0) 2016.01.04
댓글
댓글쓰기 폼