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