강의

멘토링

로드맵

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

도비님의 프로필 이미지
도비

작성한 질문수

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

Promise 객체

해결된 질문

작성

·

23

1

안녕하세요! 강의 너무 잘 듣고 있습니다 ㅎㅎ

21강 비동기 처리 부분에서 비동기란 무엇인지 너무 잘 알려주셔서 어느정도 이해를 했다고 생각했습니다.

setTimeout을 활용해서 시간으로 생각하니까 이해가 잘 되는것 같아요!

 

그 다음 강의에서 Promise 라는 부분이 나오는데,

const promise = new Promise()

이와 같은 생성자 함수(?)로 Promise 객체를 생성해서 사용하는 이유가 궁금합니다.

정확히는 Promise 객체가 무엇인지 잘 와닿지 않습니다 ㅠㅠ 강의를 듣다 보면 "Promise를 반환한다." 라는 말을 자주 들어볼 수 있는데, 이 말이 잘 이해가 안되고 있어서 이렇게 질문 남겨봅니다.

답변 2

1

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

안녕하세요 🙂 질문 감사합니다.

Promise 객체는 쉽게 말해보자면, '결과는 지금 모르지만 나중에 결과를 알려주는' 그런 약속된 객체라고 할 수 있습니다. dobbymin2님이 이해하신 비동기 작업은 시간이 걸리는 작업이기 때문에 자바스크립트가 기다리지 않고 계속 다음 코드를 실행할 수 있도록 해주는데요, 이러한 나중에 끝나는 작업의 결과를 담아두는 그릇을 바로 Promise라고 할 수 있습니다!!

 

function getData() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("서버 응답 데이터");
    }, 1000);
  });
}

따라서 Promise를 반환한다 라는 의미는, 위의 코드와 같이 getData 함수처럼 실제 데이터를 반환하지 않고 대신 Promise 객체를 반환한다. 즉, 지금은 결과가 없지만 1초 후에는 '서버 응답 데이터'라는 값을 전달할 거라는 약속을 주는거라고 이해해주시면 될 것 같습니다 🙂

도비님의 프로필 이미지
도비
질문자

아하! 이해했습니다! ㅎㅎ

주말임에도 불구하고 빠르게 답변 달아주셔서 감사합니다 강사님 ! ㅎㅎ

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

궁금한 점이 있으시다면 언제든지! 질문 남겨주세요 🙂

0

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

Promise 객체는 JavaScript에서 비동기 작업을 처리하기 위한 객체입니다. 이는 작업이 완료된 후 결과 값을 반환하거나, 작업이 실패했을 때 에러를 처리하는 방법을 제공합니다. 비동기 작업은 일반적인 코드 실행 흐름과 다르게 실행되기 때문에, 작업의 완료 또는 실패 여부를 추적하는 데에 Promise가 유용하게 사용됩니다.

Promise 객체의 이해

  1. 생성: new Promise() 생성자 함수로 Promise 객체를 생성합니다.

    • 이 생성자는 두 개의 콜백 함수를 받습니다: resolvereject.
    • resolve: 작업이 성공적으로 완료되었을 때 호출되며, Promise 객체가 성공 상태인 fulfilled로 전환됩니다.
    • reject: 작업이 실패했을 때 호출되며, Promise 객체가 실패 상태인 rejected로 전환됩니다.
  2. 사용:

    • Promise가 반환되면, then() 메서드를 사용하여 성공 시의 결과를 처리할 수 있습니다.
    • 만일 작업이 실패할 경우, catch() 메서드를 사용하여 에러를 처리합니다.

Promise를 사용하는 이유는 비동기 작업의 결과를 예측 가능하고 체계적으로 관리할 수 있기 때문입니다. 예를 들어, 서버에서 데이터를 가져오는 작업과 같은 것이 있습니다.

예시 코드

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('작업이 완료되었습니다!');
  }, 1000);
});

promise
  .then((message) => {
    console.log(message); // 1초 후, '작업이 완료되었습니다!' 출력
  })
  .catch((error) => {
    console.error(error);
  });

Promise 객체가 무엇인지 더 이해하기 위해 아래의 링크에서 설명을 보실 수 있습니다:
- 비동기 처리와 Promise의 이해

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

도비님의 프로필 이미지
도비

작성한 질문수

질문하기