본문으로 건너뛰기

"promise" 태그로 연결된 2개 게시물개의 게시물이 있습니다.

모든 태그 보기

· 약 6분
Jake Son

이전 글에서는 promise 를 반환하는 함수들을 then 을 이용해 합성하는 과정을 살펴보았다.
이제 파라미터를 2개 이상 요구하는 함수가 있는 경우를 살펴보자.

· 약 10분
Jake Son

예전 node.js 의 많은 비동기 함수는 결과를 함수로 받는 콜백형태로 이루어져 있었다.
이로인해 여러 비동기 로직을 순차적으로 실행하는 코드를 보면 일명 Callback Hell 이라는 것을 볼 수 있다.

asyncA((a) => {
asyncB((b) => {
asyncC((c) => {
asyncD((d) => {
return a + b + c + d;
});
});
});
});

이후 이를 해결하는 방안으로 여러 라이브러리나 기술들이 나왔으나 지금은 주로 promiseasync/await 를 활용한다.

사실 나는 angular 를 통해 js 를 본격적으로 사용했기에 비동기 처리를 rxjsobservable 을 사용해왔다.
하지만 백엔드 개발자가 된 이후로 api 를 개발하는데 사용하는 대부분의 함수가 promise 를 반환하다보니 observable 을 활용하지 않게되었다.

promise 를 본격적으로 사용했을 때에는 이미 async/await 가 도입된 이후였고 동기적으로 보이는 코드를 작성하는데 큰 어려움 없었다.
그래서 굳이 then 이나 catch 구문을 사용할 필요가 없다고 생각했었다.
그러나 함수형 패러다임을 공부하면서 함수의 합성, 선언적인 코드, pointfree 에 대한 매력을 느꼈고 이를 then chaining 을 통해 이룰 수 있다는 것을 깨달았다.
함수형 패러다임 중 난해한 monadpromise 와 비교하면서 생각하니 이해하는데 많은 도움을 받았다.
그래서 이와 관련한 글을 작성하려고 한다.