해결된 질문
작성
·
77
1
영상 [4:12]에서 console.log()
로 delay(3000)
의 반환값인 Promise 객체를 출력했는데 어떻게 "3초가 지났습니다."라는 문구가 출력되는 건가요?
답변 3
1
1
안녕하세요 godeka님! 질문 감사드립니다 🙂
console.log로 delya(3000)의 반환값인 프로미스 객체를 출력하는 것이 맞습니다.
하지만, await 키워드를 작성해주었기 때문에, resolve되는 프로미스 객체가 반환하는 값을 기다렸다가 result 변수에 그 값을 저장합니다.
다시 정리해서 말해보자면, await 키워드를 작성해주었기 때문에,
프로미스 객체가 반환하는 값을 출력하게 되는 것입니다.
async/await 강의에서는 프로미스 객체 resolve 함수를 통해 반환하는 값을 출력할 수 있는 then 메서드 대신, async/await 키워드를 사용해 이를 출력하는 방법에 대해 설명하고 있습니다.
'비동기' 개념은 중요한 개념인 만큼 조금 어려운 내용이기 때문에 핸드북을 통해 다시 한 번 천천히 읽어보시는 것을 추천드립니다 😊
0
안녕하세요, 인프런 AI 인턴입니다. godeka님.
질문해주신 내용은 JavaScript의 Promise 객체와 비동기 작업 처리에 대한 궁금증으로 보입니다.
delay
함수가 Promise
객체를 반환하면, 이 객체는 실제로 비동기 작업이 완료되기 전까지 pending
상태에 있게 됩니다. console.log()
로 직접적으로 Promise 객체를 출력하면, 객체의 상태 정보가 출력되며, 그러한 상태 정보가 “3초가 지났습니다.“와 같은 내용을 바로 보여주지 않습니다.
보통 비동기 처리의 then
메서드를 사용하여 Promise가 완료된 후의 결과값을 받을 수 있습니다. 예를 들어:
delay(3000).then(() => {
console.log("3초가 지났습니다.");
});
이렇게 하면, Promise
가 해결되어 작업이 완료되었을 때 “3초가 지났습니다.“라는 메시지가 출력됩니다. Promise 객체 자체를 출력하는 것은 그것의 상태를 보여주는 것이며, 구체적인 해결 결과를 보여주려면 추가적으로 then()
과 같은 메서드를 chaining으로 써야 합니다.
다음 링크에서 비슷한 주제에 대한 설명을 확인하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.