ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Promise, resolve(), thenable(), reject()
    개인공부 2025. 12. 18. 19:13

    Promise

    • 지금은 결과가 없더라도, 나중에 성공하거나 실패할 값에 대한 약속 객체
    • 네트워크 요청은 시간이 걸리지만 JS는 그 결과를 기다리지 않음
      • 그렇기에 Promise 객체를 이용하여 추후 데이터를 받아 사용 가능하도록 설정
    //Promise 미사용 시
    doA(() => {
      doB(() => {
        doC(() => {
          console.log("끝");
        });
      });
    });
    
    
    //Promise 사용 시
    doA()
      .then(doB)
      .then(doC)
      .then(() => console.log("끝"))
      .catch(console.error);
    • 3가지 상태를 가짐
      • pending
        • 아직 결과 없음
      • fulfilled -> value(성공 = 값) 
      • rejected -> reason(실패 = 에러)

     

    Thenable()

    • then() 함수를 가진 객체
    • Promise가 아니지만 Promise처럼 취급
    //Thenable 예시
    const obj = {
      then(resolve, reject) {
        resolve("완료");
      }
    };
    • Promise는 Thenable를 보면 자동으로 실행함

     

    resolve()

    • Promise를 성공 상태로 만들고, 그 성공 값을 전달하는 함수
    • resolve(value) 호출 시 :
      1. Promise 상태를 pending -> fulfilled로 바꿈
      2. 그 순간의 value를 Promise 결과로 저장
      3. .then()에 등록된 콜백들이 이 value를 받음
    //resolve 예시
    const p = new Promise((resolve, reject) => {
      resolve("성공!");
    });
    
    p.then((v) => {
      console.log(v);
    });
    
    
    """
    결과
    
    성공!
    """

     

    reject

    • Promise를 실패 상태로 만들고 그 실패 이유(에러)를 전달하는 함수
    • reject(error) 호출 시 :
      1. Promise 상태가 Pending -> rejected로 바뀜
      2. .catch() 또는 .then(..., onRejected)로 연결된 콜백이 실행됨
    //reject 예시
    const p = new Promise((resolve, reject) => {
      reject("문제가 생김!");
    });
    
    p.catch((err) => {
      console.log(err);
    });
    
    """
    결과
    
    문제가 생김!
    """
Designed by Tistory.