TIL:forEach 와 for 문의 차이

Snoop So·2023년 2월 13일
0

forEach 와 for 문의 차이

(async () => {
  const info = await enterURL({
    hostname: 'm.naver.com',
    path: '/',
    method: 'GET',
  });
  const links = info.links;
  links.forEach(async (link) => {
    const options = {
      hostname: link.hostname,
      path: link.path,
      method: 'GET',
    };
    await enterURL(options);
  });
  const overalInfo = convertInfoToOveralInfo(infoContainer);
  printOveralInfo(overalInfo);
})();
(async () => {
  const info = await enterURL({
    hostname: 'm.naver.com',
    path: '/',
    method: 'GET',
  });
  const links = info.links;
  for (const link of links) {
    const options = {
      hostname: link.hostname,
      path: link.path,
      method: 'GET',
    };
    await enterURL(options);
  }
  const overalInfo = convertInfoToOveralInfo(infoContainer);
  printOveralInfo(overalInfo);
})();

forEach 메소드는 배열의 각 요소를 순회하면서 콜백 함수를 비동기적으로 호출합니다. 이 때, 비동기적으로 호출되는 enterURL 함수의 실행이 끝나지 않아도 다음 enterURL 함수를 호출하게 됩니다. 따라서 forEach 메소드를 사용할 때에는 모든 enterURL 함수의 실행이 끝나기 전에 printOveralInfo 함수가 실행될 수 있습니다.

반면에 for 문은 동기적으로 실행되기 때문에 enterURL 함수의 실행이 끝나야 다음 enterURL 함수를 호출합니다. 따라서 for 문을 사용할 때에는 enterURL 함수의 실행이 모두 끝난 후에 printOveralInfo 함수가 실행될 것입니다.

0개의 댓글