Async Lib 사용법
async
라이브러리는 JavaScript에서 비동기 연산을 쉽게 처리할 수 있게 도와주는 유틸리티 모듈입니다.
Node.js나 브라우저 기반의 JavaScript 애플리케이션에서 사용할 수 있으며, 복잡한 비동기 로직을 간결하고 관리하기 쉬운 코드로 작성할 수 있게 해줍니다.
주요 기능
async
라이브러리는 다양한 유틸리티 함수를 제공하는데, 이 함수들은 크게 몇 가지 범주로 나눌 수 있습니다:
-
컬렉션(Collection) 처리:
async.each()
,async.map()
,async.filter()
등과 같은 함수들은 배열이나 객체와 같은 컬렉션에 대한 비동기 연산을 병렬 또는 시리즈로 처리할 수 있게 해줍니다. -
흐름 제어(Flow Control):
async.series()
,async.parallel()
,async.waterfall()
등의 함수들은 여러 비동기 작업을 순차적으로 또는 병렬로 실행하고, 최종적인 결과를 취합하는 데 사용됩니다. -
유틸리티(Utility):
async.retry()
,async.timeout()
등의 함수는 비동기 작업을 재시도하거나, 실행 시간을 제한하는 등의 추가적인 기능을 제공합니다.
예제 코드
다음은 async
라이브러리를 사용한 간단한 예제입니다.
const async = require('async');
// 비동기 함수 예시
function fetchData(callback) {
setTimeout(() => {
callback(null, 'Data fetched');
}, 1000);
}
function processData(data, callback) {
setTimeout(() => {
callback(null, data + ' and processed');
}, 1000);
}
// 시리즈로 비동기 작업 실행
async.series([
fetchData,
processData
], (err, results) => {
if (err) {
console.error('Error:', err);
return;
}
console.log('Results:', results);
});
이 예제에서 async.series
함수는 배열 내의 비동기 함수들을 순서대로 실행하고, 모든 함수의 실행이 완료되면 최종 결과를 배열로 반환합니다. 이러한 방식으로, 복잡한 비동기 작업의 흐름을 쉽게 제어할 수 있습니다.
ES2017+의 async/await
현대 JavaScript에서는 ES2017에서 도입된 async/await
구문을 통해 비동기 코드를 더욱 간결하고 직관적으로 작성할 수 있습니다. async/await
는 프로미스 기반 로직을 사용하며, async
라이브러리와 비슷한 효과를 내지만 더 네이티브한 방식으로 제공합니다. 때문에 async/await
가 지원되는 환경에서는 별도의 async
라이브러리 없이도 비슷한 비동기 처리 로직을 구현할 수 있습니다.