Promise 비동기 작업

YOBY·2023년 10월 17일
0

Promise는 JavaScript에서 비동기 작업을 처리하는 객체입니다.
비동기 작업이란, 코드가 순차적으로 실행되지 않고 동시에 여러 작업이 수행될 수 있는 상황을 의미합니다.

Promise의 상태 (State)
Promise는 다음 세 가지 상태를 가집니다:

대기 (pending): 초기 상태로, 아직 결과가 이행되지 않은 상태입니다.
이행 (fulfilled): 비동기 작업이 성공적으로 완료된 상태입니다.
거부 (rejected): 비동기 작업이 실패한 상태입니다.

Promise 생성자
Promise 생성자는 new Promise()를 사용하여 생성됩니다.
이 생성자는 콜백 함수를 인자로 받습니다.
이 콜백 함수는 두 개의 매개변수를 가지며, resolve와 reject 함수입니다.

resolve: 정상적인 결과 값을 반환하고 Promise를 이행 상태로 만듭니다.
reject: 예외가 발생하거나 오류가 있는 경우 이를 처리하고 Promise를 거부 상태로 만듭니다.

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    const result = prompt("hello를 입력해주면 선물을 줄께");
    if (result === "hello") {
      resolve("선물");
    } else {
      reject("땡!");
    }
  }, 2000);
});

then(), catch(), finally()

  • then(): Promise가 이행됐을 때 호출되며, resolve의 결과값을 받아옵니다.
  • catch(): Promise가 거부됐을 때 호출되며, reject의 결과값을 받아옵니다.
  • finally(): Promise가 이행되거나 거부되더라도 항상 실행됩니다.
myPromise
  .then((result) => {
    console.log("결과 : " + result);
  })
  .catch((error) => {
    console.log("결과 : " + error);
  })
  .finally(() => {
    console.log("성공이든 실패든 항상 출력됩니다!");
  });

이제 위의 코드를 실행하면, 비동기 작업이 정상적으로 처리되면 결과가 출력되고, 문제가 발생하면 에러 메시지가 출력됩니다.
마지막으로 finally 블록은 항상 실행됩니다.

0개의 댓글