본문 바로가기

JavaScript

[JS] Promise 프로미스 의미

Promise란 코드에서 바로 값을 return 하지 않는 대신 promise를 return 하여 최종적으로 나중에 값을 제공하는 것을 뜻합니다.


그렇다면 이 Promise는 어디서 사용할까요? 나중에 값을 제공한다니 떠오르는게 하나 았지 않으신가요?

네. 바로 HTTP 호출을 했을 때 입니다. 물론 HTTP 호출할 때 외에도 여러 방면에서 Promise를 쓰긴 하지만 일반적으로 가장 많이 사용하는 곳은 HTTP 호출할 때입니다.

JavaScript에서 promise는 비동기이기 때문에 해결 또는 끝내는데 시간이 걸립니다. 하지만 JS 엔진인 promise가 끝날때까지 기다리지 않고 다른 코드들을 실행합니다.

그래서 promise가 최종적으로 값을 return 하기 전까진 pending 상태가 return 되고 JS 엔진은 다른 코드들을 실행하게 됩니다.

 

* Promise는 다음 중 하나의 상태를 가집니다.

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

 

* Promise 예시(then, catch메소드 사용)

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(‘300ms 뒤에 값을 return 합니다.’);
  }, 300);
});
myPromise
  .then(value => { console.log(value) })
  .catch(error => { console.error(‘error : ‘ + error) });

 

* Promise 단점:  depth가 깊어지게 된다. =>이를 해결하기 위해 나타난 것이 async/await

 

아래 블로그에서 발췌한 내용인데 코드 예시랑 더 자세히 나와있어서 참고하면 좋다.

 

 

JavaScript에서 Promise란 무엇인가?

프론트쪽을 개발하든 백엔드쪽을 개발하든 JavaScript를 사용하여 개발한다면 비동기 프로그래밍을 하는건 필수요소가 되었습니다.

medium.com

 

 

동기, 비동기란? (+Promise, async/await 개념)

1. 동기 vs. 비동기 우선 차이점 부터 설명하자면, 동기는 '직렬적'으로 작동하는 방식이고 비동기는 '병렬적'으로 작동하는 방식이다. 즉, 비동기란 특정 코드가 끝날때 까지 코드의 실행을 멈추

velog.io

 

Promise - JavaScript | MDN

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

developer.mozilla.org