• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

저번에 질문했던 프로미스에 대해서 다시 질문해볼까합니다.

22.01.05 14:22 작성 조회수 97

1

 그랩님 안녕하세요 제가 저번에 요청했던 질문에서 필요한 부분을 다시 질문할게요.

const getData = async () => {

    try {

        const result = await axios.get(

            "https://b2ef45f8-e166-41d7-bd35-9ad159028fbf.mock.pstmn.io/test"

        );

        const products = result.data.products;

        console.log(products);

        console.log(`status:(${result.status}) 통신을 성공했습니다!`);

        const data = JSON.stringify(products);

        return data;

    } catch (err) {

        console.error(err);

        console.log("결과를 가져오지 못했습니다.");

        return err;

    }

};



console.log(getData());

 이런식으로 프로미스 객체를 보다 편하게 처리 하기 위해서 async, await을 사용하면 promise.then().catch()형식을 사용하지 않고 할 수 있습니다. 그리고 getData 함수안에서 프로미스를 사용한 변수를 리턴해서 사용 하려면 async, await을 사용해 함수를 만들고 그 안에서 getData함수를 호출해서 값을 얻어올 수 있다고 저번에 올린 질문에 그랩님께서 답변해주셨습니다. 그런데 제가 프로미스 객체를 async 함수가 아닌 전역(global) 공간에서 값을 얻어 내고 싶습니다. 전역 공간에서 Promise { <pending> } 형태가 아닌 값 자체를 얻을 수는 없을까요?

답변 1

답변을 작성해보세요.

0

보통 글로벌(최상단)에서 await을 하지 못합니다. 따라서 이를 해결하기 위해서 '즉시실행함수'를 활용하곤 합니다. 이렇게 하면 async 함수를 선언하는 즉시 실행하도록 짤 수 있습니다!

(async function(){
    await getData()
}())

이승훈님의 프로필

이승훈

질문자

2022.01.06

 결과적으로는 프로미스 객체를 전역컨텍스트(글로벌)에서는 async, await없이는 사용 할 수 없다는 말씀이시군요 감사합니다!