async await를 parallel 방식으로 사용할 수 있다.
아래코드는 google-docs의 내용을 참고하였다.
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.
function PromiseAll() {
const wait1 = wait(500);
const wait2 = wait(500);
Promise.all([wait1, wait2]);
}
await를 병렬처리로 사용할 일은 없을 것 같긴한데, 이걸 알고 있으면 병렬처리 해놓고 왜 순차적으로 안되지 하는 미궁으로 빠지는 일은 없을 듯하다.