인프런 커뮤니티 질문&답변
저번에 질문했던 프로미스에 대해서 다시 질문해볼까합니다.
해결된 질문
작성
·
194
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()
}())





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