강의

멘토링

로드맵

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

dobbymin2님의 프로필 이미지
dobbymin2

작성한 질문수

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

Promise 객체

작성

·

13

0

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

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

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

 

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

const promise = new Promise()

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

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

답변 1

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의 이해

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

dobbymin2님의 프로필 이미지
dobbymin2

작성한 질문수

질문하기