회사 입사하고 코드리뷰와 몇몇 일들을 맡으면서 (바쁠땐 바쁘고 퇴근하면 힘빠져서) 한동안 블로그 포스팅을 못하고 있었다.
원래 Spring 준비하다가 기회가 생겨서 express 사용하는 서비스 회사에 4월 1일부터 입사했다.
java가 아닌 javascript를 접하는데 java와 다르게 동적 타입이며, 신경써야 하는 부분이 더 많아진 느낌이였다.
코드를 리뷰하면서 ORM의 Service, Controller, Repository 구조가 아니라 유동적으로 사용될 수 있는 express 디자인 패턴을 접하는데 가장 많이 사용하는 async 라이브러리를 많이 다루게 되었다.
Async 라이브러리을 사용하면 콜백 함수들을 순차, 병렬 처리가 가능하여 파이프라이닝 하면서 실행할 수 있다. 또한 비동기 루프를 동기적으로 만들어 실행할 수 있다.
$ npm install async --save
$ bower install async
일반적인 웹 브라우저에서 사용할 때는 bower 등을 통해 async 라이브러리를 설치할 수 있고, html에서 script 형식으로 불러 사용할 수 있다.
node.js에서 사용할 때는 npm package일 경우 npm으로 설치하여 라이브러리를 호출한다.
https://caolan.github.io/async/v3/
Home - Documentation
For Async v1.5.x documentation, go HERE Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with Node.js and installable via npm i async, it can also b
caolan.github.io
async 라이브러리는 node.js에서 콜백 지옥을 해결하는데에 사용되고, 비동기 처리하는데
task1(a, function(err, result){
task2(b, function(err, result){
... // 함수 실행
});
});
이런 식으로 함수가 중첩되면 콜백 지옥에 빠질 수도 있다.
이런 지옥을 해결하기 위해 다양한 방식이 있다. Promise, async, step 등등..
회사에서는 Promise를 사용하는 부분도 있지만 극히 드물게 사용되고 Async 라이브러리를 사용하여 병렬, 순차 처리를 한다.
Async는 주로 콜렉션과 흐름제어이고, callback구조를 다루며 포스팅을 할 것이다.
'Javascript > Async' 카테고리의 다른 글
[Async] waterfall, parallel로 흐름 제어 (0) | 2022.06.13 |
---|