[ TIL ] Promise를 처리하는 두가지 방법, then / async, await

Promise

👉🏻 Promise 객체비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다.

  • 비동기 연산이 종료된 이후의 결과값 / 실패를 처리하기 위한 처리기를 연결할 수 있도록 한다.
  • Promise() 👉🏻 이미 프로미스를 지원하지 않는 함수를 감쌀 때 주로 사용합니다.

Promise 상태

  • 대기(pending): 이행하거나 거부되지 않은 초기 상태
  • 이행(fulfilled): 연산 성공적으로 완료
  • 거부(rejected): 연산 실패

Promise를 처리하는 두가지 방법

위에 정리해둔 부분은 MDN을 통해 Promise에 대한 공식 문서를 정리한 내용이고,
암만 설명을 들어도 이해 갈듯, 이해가 가지 않는 Promise.

"async/awaitPromise랑 필수로 같이 써주는건가?"
"그럼 then/catch는 언제, 왜 써주는거지? try/catch랑 어떻게 달라?"

너무 갑갑해서, 내가 현재 알고있는 개념이 맞는건지 멘토님께 질문드렸다.
그 결과, Promise를 처리하는 두가지 방법이 있다고 하셨는데..!! (두둥)

  1. then 으로 resolved 된 결과를 받아오는 방법
  2. async / awaitresolved된 결과를 받아오는 방법

1. then

내부로 들어오는 콜백함수의 첫번째 인자로 Promise에서 resolved된 결과가 들어온다
여기서 resolve, reject 여부를 따질 수 있어서
then/catch 구문을 사용하여 결과 및 예외처리를 하는 것!

2. async / await

Promise를 통해 실행된 비동기 작업의 결과를 받아오기 때문에
try/catch를 통해 예외처리를 진행!


👆🏻 async/await를 사용한 것!


이쯤 되니 내가 Promise를 몰라서 힘든게 아니라,
그 이전에 resolve, rejectasync, await에 대한 개념이 부족해서 더 힘들다는 생각이 들었다.

과연 이것들은 무엇인가..!!!

resolve, reject

  1. 비동기 작업은 성공 혹은 실패한다.
  2. 비동기 작업은 요청하는 쪽과 처리하는 쪽이 구분되어있다.
  3. Promiseresolve, reject는 비동기 작업의 처리과정에서 성공/실패를 구분하는 방법이다.
new Promise((resolve, reject)=>{
  if(조건) {
    resolve('성공!');
  }
  reject('실패');
})

한마디로 이런 식으로 로직이 진행된다는 것..!!!!!

async, await


참고

👉🏻 Promise - JavaScript | MDN

👉🏻 resolve, reject란?

좋은 웹페이지 즐겨찾기