본문으로 바로가기
COMMUNITY모든 이야기

JS 비동기 forEach 루프 내에서 await가 작동하지 않고 바로 종료되는 문제

빗방울 2026.10.30 11:14 2분 읽기 조회 11 · 추천 1

API로 받은 리스트를 순회하면서 각 항목마다 데이터를 업데이트하는 자동화 스크립트를 짜고 있습니다.

코드:

const items = [1, 2, 3];

async function updateData(id) {
  return new Promise(resolve => setTimeout(() => {
    console.log(`Update complete: ${id}`);
    resolve();
  }, 1000));
}

async function run() {
  items.forEach(async (item) => {
    await updateData(item);
  });
  console.log('All tasks finished');
}

run();

오류: 'All tasks finished'가 가장 먼저 출력되고, 그 이후에 1초 간격으로 Update complete 메시지가 출력됨

시도: run 함수 앞에 async를 붙였고, forEach 콜백 함수 앞에도 async를 추가해 보았습니다.

질문: forEach 내부의 await가 무시되고 다음 코드로 바로 넘어가는 이유가 무엇인가요?

모든 이야기1455

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1455개의 이야기
댓글