[javascript] async/await과 Promise.all의 비교

dev stefanCho·2021년 5월 28일
1

javascript

목록 보기
6/26

async await를 parallel 방식으로 사용할 수 있다.

아래코드는 google-docs의 내용을 참고하였다.

async/await parallel

const wait = time => setTimeout(() => console.log(time), time);

async function parallel() {
  const wait1 = wait(500);
  const wait2 = wait(500);
  await wait1;
  await wait2;
  return "done!";
}

console에 돌려보면 console.log 가 동시 에 찍힌다.
하지만 이 방식은 추천하지 않는다. error-handle 어렵기 때문이다.
stackover-flow를 보면 항상 Promise.all을 사용하라고 한다. (혹은 Promise.allSettled)

Summary
TL;DR: Never use multiple await for two or more independent async parallel tasks, because you will not be able to handle errors correctly. Always use Promise.all() for this use case.

Promise.all([])

function PromiseAll() {
  const wait1 = wait(500);
  const wait2 = wait(500);
  Promise.all([wait1, wait2]);
}

await를 병렬처리로 사용할 일은 없을 것 같긴한데, 이걸 알고 있으면 병렬처리 해놓고 왜 순차적으로 안되지 하는 미궁으로 빠지는 일은 없을 듯하다.

profile
Front-end Developer

0개의 댓글