인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

godeka님의 프로필 이미지

작성한 질문수

한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지

3. async와 await

Promise 객체 출력

해결된 질문

작성

·

77

1

영상 [4:12]에서 console.log()delay(3000)의 반환값인 Promise 객체를 출력했는데 어떻게 "3초가 지났습니다."라는 문구가 출력되는 건가요?

답변 3

1

godeka님의 프로필 이미지
godeka
질문자

아 그렇군요! 이해되었습니다

감사합니다 😆

1

효빈 Hyobin님의 프로필 이미지
효빈 Hyobin
지식공유자

안녕하세요 godeka님! 질문 감사드립니다 🙂

console.log로 delya(3000)의 반환값인 프로미스 객체를 출력하는 것이 맞습니다.
하지만, await 키워드를 작성해주었기 때문에, resolve되는 프로미스 객체가 반환하는 값을 기다렸다가 result 변수에 그 값을 저장합니다.
다시 정리해서 말해보자면, await 키워드를 작성해주었기 때문에,
프로미스 객체가 반환하는 값을 출력하게 되는 것입니다.

async/await 강의에서는 프로미스 객체 resolve 함수를 통해 반환하는 값을 출력할 수 있는 then 메서드 대신, async/await 키워드를 사용해 이를 출력하는 방법에 대해 설명하고 있습니다.

'비동기' 개념은 중요한 개념인 만큼 조금 어려운 내용이기 때문에 핸드북을 통해 다시 한 번 천천히 읽어보시는 것을 추천드립니다 😊

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. godeka님.

질문해주신 내용은 JavaScript의 Promise 객체와 비동기 작업 처리에 대한 궁금증으로 보입니다.

delay 함수가 Promise 객체를 반환하면, 이 객체는 실제로 비동기 작업이 완료되기 전까지 pending 상태에 있게 됩니다. console.log() 로 직접적으로 Promise 객체를 출력하면, 객체의 상태 정보가 출력되며, 그러한 상태 정보가 “3초가 지났습니다.“와 같은 내용을 바로 보여주지 않습니다.

보통 비동기 처리의 then 메서드를 사용하여 Promise가 완료된 후의 결과값을 받을 수 있습니다. 예를 들어:

delay(3000).then(() => {
  console.log("3초가 지났습니다.");
});

이렇게 하면, Promise가 해결되어 작업이 완료되었을 때 “3초가 지났습니다.“라는 메시지가 출력됩니다. Promise 객체 자체를 출력하는 것은 그것의 상태를 보여주는 것이며, 구체적인 해결 결과를 보여주려면 추가적으로 then()과 같은 메서드를 chaining으로 써야 합니다.

다음 링크에서 비슷한 주제에 대한 설명을 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

godeka님의 프로필 이미지

작성한 질문수

질문하기