온에듀링크

안녕하세요! 자바스크립트를 공부하고 있는 ‘비동기늪에빠진자’입니다.

현재 오픈 API를 활용해서 날씨 정보를 가져오는 간단한 웹 페이지를 만들고 있습니다. 그런데 데이터를 분명히 받아왔는데도 외부에서 변수를 출력해보면 자꾸 undefined가 떠서 몇 시간째 헤매고 있습니다.

발생한 문제 (undefined 출력)

fetch 함수를 사용해서 API를 호출하고, 그 결과값을 함수 바깥에 있는 변수에 할당하려고 했습니다. 콘솔을 찍어보면 fetch 내부에서는 데이터가 정상적으로 찍히는데, 함수를 호출하고 나서 그 결과값을 확인하면 항상 데이터가 비어있습니다.

“데이터가 도착하기도 전에 console.log가 먼저 실행되는 것 같은데, 어떻게 기다리게 해야 할지 모르겠습니다.”

작성한 코드

아래는 문제가 발생하는 자바스크립트 코드입니다.

function getWeatherData() {
    let resultData;

    fetch('https://api.example.com/weather/seoul')
        .then(response => response.json())
        .then(data => {
            console.log("1. API 내부 데이터:", data); // 여기서는 데이터가 잘 나옵니다!
            resultData = data;
        });

    return resultData; 
}

const weather = getWeatherData();
console.log("2. 최종 결과물:", weather); // 여기서는 항상 undefined가 나옵니다.
        

궁금한 점 (도움 요청)

강의에서 콜백 함수나 Promise를 써야 한다고 배운 것 같은데, 막상 제 코드에 적용하려니 구조가 헷갈립니다. 최근에는 async/await를 많이 쓴다는데 이 코드에 적용하려면 어떻게 수정해야 할까요?

  • 현재 코드에서 2. 최종 결과물이 undefined로 나오는 정확한 이유가 무엇인가요?
  • 제가 원하는 대로 데이터를 모두 받아온 후에 출력하려면 코드를 어떻게 변경해야 하는지 예시를 보여주시면 감사하겠습니다.

고수님들의 명쾌한 답변을 기다리겠습니다. 미리 감사드립니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


언어 선택 / Select Language