JavaScript

Promise 완벽 정리

용성 2021. 8. 13. 03:29

Promise

  • Promise는 비동기 동작을 처리하기 위해 ES6에 도입되었다. (처음엔 혁명 느낌)
  • Promise는 클래스다.
  • Promise 클래스를 인스턴스화 해서 promise 객체를 만든다.
  • 반환된 promise로 원하는 비동기 동작을 처리한다.
  • Promise는 일단 state와 resolve, reject 함수를 이해하면 된다.

 

promise 구현하기

let promise = new Promise(function(resolve, reject) {

// 여기 비동기 로직을 작성!

// 시켜놓고 언제 완료될지 모르는 로직!

});

  • resolve는 성공했을 때 실행할 함수
  • reject는 실패했을 때 실행할 함수

 

resolve

reject

Quiz

setTimeout은 비동기이기에 console.log 가 먼저 찍히고

프로미스는 한가지의 resolve만 리턴하기에 1 , 3 , 2  순서로 결과가 나오게 된다.

 

 

Promise Chaining

  • 여러 개의 비동기 작업을 순차적으로 해야하는 경우가 많다.
  • 순차적으로 각각의 작업이 이전 단계 비동기 작업이 성공하고 나서 그 결과값을 이용하여 다음 비동기 작업을 실행해야 하는 경우

promise의 resoleve 값은 1이므로

first 에 들어가는 인자는 1이고 return 값을 2를 보냈기에

그에 대한 결과물의 second에 들어가는 인자는 2 이다.

 

promise가 promise를 반환이 가능하다.

 

promise 3가지 상태

  • promise 객체는 "상태"를 갖고 있습니다.
  • Pending(대기): 비동기 처리 로직이 아직 완료되지 않은 상태
  • Fulfilled(이행): 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
  • Rejected(실패): 비동기 처리가 실패하거나 오류가 발생한 상태

 

에러 처리 - catch

마지막으로 제일 중요한건

IE에서 사용이 불가능하다.

그러므로 javascript가 아닌 react를 이용해서 create-react-app으로 바벨의 발 아래서 만들어야한다.

728x90