Promise
<aside>
💡 비동기 작업을 처리하는데 사용되는 객체
</aside>
const promise = new Promise((resolve, reject) => {
});
- promise가 생성된 시점에 정의되지 않은 값을 표현하기 위한 대체재
- 비동기 연산이 종료된 이후에 결과 값과 실패 사유를 처리하기 위한 handler를 연결할 수 있다.
- 그렇기에 promise가 반환하는 것은 결과’값’이 아니라, 추후에 어떤 시점에 결과를 제공하겠다는 약속, “Promise”를 반환한다.
왜 나왔죠?
- JS는 비동기 처리를 위한 방법으로 당시 콜백 함수를 사용해 왔는데, 전통적인 콜백 패턴은 Callback Hell로도 불리는 낮은 가독성, 비동기 처리 중 발생한 에러 처리의 어려움, 다수의 비동기 처리를 동시에 처리하는 것에도 한계가 있었다.
- 이를 처리하기 위해 ES6에서 도입된 패턴이 Promise다.
new Promise {
state: pending | fulfilled | rejected
result: undefined | value | error
}
- Promise 객체는 기본적으로
state
와 result
속성을 가지며,
- state
- pending(대기)
- fulfilled(이행됨)
- rejected(거부됨)
- result
위와 같이 상황에 따라 속성별 3가지의 상태를 가진다.
- React Suspense 역시 Promise의 state를 기반으로 만들어졌다.