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

Node.js에서 async/await 루프 내의 변수 캡처 및 실행 순서 문제

빗방울 2026.10.31 02:17 2분 읽기 조회 54 · 추천 2

과제 수행 중 배열의 각 항목을 비동기적으로 처리하여 결과를 수집하려 합니다.

코드:

const axios = require('axios');

async function fetchData() {
  const ids = [1, 2, 3];
  const results = [];

  for (let i = 0; i < ids.length; i++) {
    await axios.get(`https://jsonplaceholder.typicode.com/posts/${ids[i]}`)
      .then(res => {
        results.push({ id: ids[i], data: res.data });
      });
  }
  return results;
}

fetchData().then(console.log);

오류: 예상과 달리 `results` 배열의 순서가 보장되지 않거나, 특정 환경에서 `ids[i]` 값이 의도치 않게 참조됨.

시도: `for` 루프 대신 `forEach`를 사용했으나 비동기 제어가 되지 않아 `results`가 빈 배열로 반환됨.

질문: `for` 루프 내에서 `await`를 사용함에도 불구하고 비동기 콜백 내부에서 인덱스 변수가 정확히 캡처되지 않는 이유와 해결 방법은 무엇입니까?

모든 이야기1511

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

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