개념정리 - Promise

Seungmin Shin·2021년 6월 22일
1

코딩 개념정리

목록 보기
18/33

Promise

1. Promise란 무엇인가?

Promise는 우리말로 '약속' 이라는 뜻을 가지고 있으며,
JavaScript에서 제공하는 비동기를 간편하게 처리할 수 있도록 도와주는 Object이다.

2. Promise가 하는 일

Promise는 주어진 장시간의 기능을 수행한다.
그리고 그 기능이 정상적으로 수행됬다면 성공메세지와 함께 처리된 결과값을 전달해주고
그렇지 못하고 예상치 못한 문제가 발생했다면 에러를 전달해준다.

Promise는 이렇게 말한다.

" 내가 언제 User의 데이터를 받아올지 모르겠지만, 내가 약속할게, 이 Promise라는 Object를
가지고 있다면 여기에 네가 .then이라는 콜백함수만 등록해 놓으면 user의 data가 준비되는대로
네가 등록한 콜백함수를 불러줄게. " 라고.

3. 왜 Promise를 써야하는가?

1) Promise는 자바스크립트에서 비동기 함수를 다루는 또 다른 방법을 제공한다.

setTimeout이나 setInterval과 다른점이라면, setTimeout과 setInterval은
사용되는 즉시 실행되지만, Promise는 이행, 보류, 거부와 같은 상태값을 제공한다는 것이다.

2) 비동기적인 함수 호출을 원하는대로 컨트롤 하기 위해서.

콜백 함수 안에 막바지로 resolve나 reject를 쓰는 일은 없다. 따라서 다음 예제가 가장 간단한 기본 예제가 될 것이다.

var myPromise1 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('foo');
  }, 2000);
});
myPromise1.then(); // 이행

4. Promise 사용방법

Promise의 생성방법은 대략 이렇다.

const promise1 = function(param){  // param 을 인자로 가지고 있는 함수를
  return new Promise(function(resolve,reject){  // Promise형태로 return 하는데
    if(param){           // 인자를 정상적으로 받아왔다면
      resolve('data');   // resolve를 통해서 그 data를 그대로 출력하고,
    }
    else{                // 정상적이지 못한 상태라면 err라고 판단하고
      reject('err');     // reject를 통해 err상태를 출력한다.
    }
  });
}

Promise의 인자로 넘겨진 콜백 함수 안에 정의된 내용에 따라
이행이냐(fulfilled) 거부냐(rejected)가 결정된다.

대부분 이 큰 틀안에서 만들어지기때문에 이 큰 그림을 이해하면 다른 상황에서도
어렵지 않게 만들 수 있을것이다.

profile
Frontend Developer

0개의 댓글