티스토리 뷰

728x90
반응형

await 병렬 처리



비동기 작업을 하는 함수를 await 키워드를 사용하여 동기적으로 제어 할 수 있지만, 자주 사용하게 되면 처리 속도가 느려지기 때문에 비효율적 일 수 있다.

예를 들어,
function delay(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function getApple() {
  await delay(3000);
  return "apple";
}

async function getBanana() {
  await delay(3000);
  return "banana";
}

async function pickFruits2() {
  const apple = await getApple();	//3초 기다리고 실행
  const banana = await getBanana();	//3초 기다리고 실행

  return `${apple} + ${banana}`;
}

pickFruits2().then(console.log);

getApple() 함수와 getBanana() 함수는 호출 할 때 서로 연관이 되어 있지 않기 때문에 기다릴 필요가 없다.

이 소스를 Promise의 특성을 이용하여 개선하게 되면 다음과 같다.

async function pickFruits2() {
  const applePromise = getApple();	//Promise 객체 안 코드 블록 바로실행
  const bananaPromise = getBanana();	//Promise 객체 안 코드 블록 바로실행
  const apple = await applePromise;
  const banana = await bananaPromise;
  
  return `${apple} + ${banana}`;
}

getApple()과 getBanana() 함수를 호출 할 때 Promise 객체 안 코드 블록이 바로 실행 되기 때문에 3초 동안 두 함수가 비동기로 실행하게 되어 더 효율적이다. 

 

 

참고

 

 

 

728x90
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함