JavaScript 비동기 - forEach vs for

곽태욱·2021년 10월 4일
0

비동기 실행 순서

비동기 작업은 실행 순서에 유의해아 합니다.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function log(item) {
  await sleep(300);
  console.log(item);
}

위 두 함수는 아래 상황에서 공통적으로 쓰이는 함수입니다.

1. forEach 메소드

async function processArrayForEach(array) {
  array.forEach(async (item) => {
    await log(item);
  })
  console.log('Done!');
}

processArrayForEach([1, 2, 3]);
// Done!
// 1
// 2
// 3

Done!이 먼저 출력되고 300ms 간격으로 1, 2, 3이 출력됩니다.

2. for문

async function processArrayFor(array) {
  for (let i = 0; i < array.length; i++) {
    await delayedLog(array[i]);
  }
  console.log('Done!');
}

processArrayFor([1, 2, 3]);
// 1
// 2
// 3
// Done!

300ms 간격으로 1, 2, 3이 먼저 출력되고, 마지막에 Done!이 출력됩니다.

profile
이유와 방법을 알려주는 메모장 겸 블로그. 블로그 내용에 대한 토의나 질문은 언제나 환영합니다.

0개의 댓글