자바스크립트에서 비동기 작업을 처리할 때 일반적으로 Promise를 사용하여 비동기 코드를 순차적으로 실행합니다. 하지만 때로는 여러 비동기 작업을 동시에 실행하는 것이 필요할 수 있습니다. 이때 자바스크립트의 async/await 문법을 사용하여 간편하게 병렬 처리를 할 수 있습니다.
async/await란?
async/await는 자바스크립트의 비동기 처리 패턴으로, ES2017에 도입되었습니다. 이 패턴은 Promise를 기반으로 동작하며, 비동기적인 작업을 동기적으로 다룰 수 있게 해줍니다. async 함수에서는 비동기 작업을 수행하는 함수 앞에 await
키워드를 붙여 해당 작업이 완료될 때까지 기다릴 수 있습니다.
병렬 처리 with async/await
병렬 처리를 위해서는 여러 개의 비동기 작업을 동시에 실행해야합니다. 자바스크립트에서는 Promise.all()
메소드를 사용하여 병렬 처리를 할 수 있습니다. async/await와 함께 사용하면 다음과 같이 병렬 처리를 할 수 있습니다.
async function parallelProcess() {
const promise1 = asyncFunc1();
const promise2 = asyncFunc2();
const promise3 = asyncFunc3();
await Promise.all([promise1, promise2, promise3]);
// parallel processing completed
console.log('Parallel processing completed!');
}
parallelProcess();
위의 예제에서는 asyncFunc1
, asyncFunc2
, asyncFunc3
세 개의 비동기 함수를 병렬로 처리하고 있습니다. Promise.all()
메소드를 사용하여 세 개의 비동기 작업이 모두 완료될 때까지 기다린 후에 다음 로직을 실행합니다.
에러 처리
async/await를 사용할 때에는 예외 상황에 대한 처리도 중요합니다. 비동기 작업 중에 예외가 발생한다면 try-catch
문을 사용하여 예외를 캐치할 수 있습니다.
async function parallelProcess() {
try {
const promise1 = asyncFunc1();
const promise2 = asyncFunc2();
const promise3 = asyncFunc3();
await Promise.all([promise1, promise2, promise3]);
// parallel processing completed
console.log('Parallel processing completed!');
} catch (error) {
console.error('Error occurred during parallel processing:', error);
}
}
parallelProcess();
위의 예제에서는 try
블록 안에서 비동기 작업을 실행하고, 예외가 발생할 경우 catch
블록에서 예외를 처리합니다.
결론
자바스크립트의 async/await를 사용하면 간단하게 병렬 처리를 할 수 있습니다. Promise.all()
메소드를 사용하여 여러 개의 비동기 작업을 동시에 실행하고, await
키워드를 사용하여 작업이 완료될 때까지 기다릴 수 있습니다. 예외 처리에 대해서도 주의하여 작성하면 좋습니다.