Javascript/Node.js

Promise.all()

Frankie 2021. 11. 2. 11:15

async await은 Promise를 가독성 좋게 사용하는 한 가지 방법에 불과하다고 합니다.

 

자바스크립트를 통해 비동기 코드를 처리하는 가장 기본적인 방법은 콜백 함수, 프라미스(Promise), async-await 등이 있습니다.

 

각각 모두 장단점이 있습니다.

각각의 함수가 중첩되는 상황이 깊어질수록 콜백 함수는 콜백 헬을 만들고, 여러 프라미스가 체이닝이 되어 선언되면 에러를 디버깅하긴 힘듭니다.

 

 

 

여러 개의 비동기 함수를 사용하려 할 때 Promise.all과 async/await을 사용해서 시간을 계산해보면 Promise.all이 훨씬 시간이 단축되는 것을 테스트 해볼 수 있습니다.

 

그 이유는 async-await 함수는 하나하나 다 기다렸다가 하고, Promise.all은 병렬로 비동기 함수를 실행시켰기 때문입니다.

 

그리고 Promise.all 의 장점으로는 Fail Fast가 있습니다.

 

비동기 처리를 병렬적으로 빠르게 처리할 수 있다는 장점이 있지만 장점 뿐만 아니라 비동기 처리가 실패했을 경우도 있습니다. 이 때 Promise.all()은 중간에 어떤 함수가 에러가 났을 때 그 실패를 즉시 반환합니다.

 

즉, 에러가 나도 바로바로 확인할 수 있는 장점이 있습니다.