본문 바로가기
TIL(Today I Learned )

IM 29일차 TIL(promise)

by 지에스정 2020. 6. 9.

Promise

 

프로미스(Promise)란 자바스크립트 비동기 처리에 사용되는 객체로 어떤 코드를 실행이 완료되기 전에 다음 코드를 수행되는 특성이다.

 

프로미스는 주로 서버에서 받아온 데이터를 화면에 표시하기 위해 사용된다.

 

 

프로미스는 3가지 특징을 가진다.

 

  • Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
  • Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
  • Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태

pending(대기)new Promise() 를 호출하게 되면 대기 상태가 된다.

 

new Promise(function(res, rej){

});

 콜백 함수로는 resolve, reject를 받는다.

 


fulfilled(이행)resolve를 받아 호출하는 것이다.

new Promise(function(res, rej) {
  res()
}

////////////////////////////////////////////////////

function getData() {
  return new Promise(function(res, rej) {
    var data = 10;
    res(data);
  });
}


getData().then(function(Data) {
  console.log(data); // 10
});

.then() 을 통해서 res값을 받아올 수 있다.

 


rejected(실패)reject를 받아 호출할때 발생한다.

new Promise(function(res, rej) {
    rej(new Error("error"));
  });

///////////////////////////////////////////////////////

function getData() {
  return new Promise(function(res, rej) {
    rej(new Error("error"));
  });
}

getData().then().catch(function(err) {
  console.log(err); // Error: error
});

실패에 대한 이유를 .catch()로 받아올 수 있다.

 


Promise chaining

 

프로미스를 연결해서 사용하는 것을 의미하며 ,  .then() 을 통해 호출할 수 있다.

 

function getData() {
  return new Promise({
    
  });
}

getData()
  .then(function(data) {
    
  })
  .then(function() {
    
  })
  .then(function() {
    
  });

 

위와 같은 형식으로 프로미스를 연결하여 계속해서 호출 값을 받아낼 수 있다.

 

비동기를 처리하기 위해서 프로미스를 사용하는 것이 유용하다.

 

프로미스 외에 비동기를 처리하기 위해 acync & await 가 최근 문법으로 등장하였고, 콜백 함수와 프로미스의 단점을 보완하고 개발자가 읽기 좋은 코드를 작성하도록 도와주기도 한다.

'TIL(Today I Learned )' 카테고리의 다른 글

[aws](Amazon Web Service) IM 39일차 TIL  (0) 2020.06.23
cookie & session  (0) 2020.06.19
IM 26일차 초보개발자 TIL  (0) 2020.06.04
IM15일차 초보개발자 TIL(fetch)  (0) 2020.05.20
IM8일차 TIL ( Time complexity)  (0) 2020.05.07