비동기 프로그래밍을 쉽게 처리할 수 있다는 점은 자바스크립트의 장점중 하나이다.
비동기 프로그래밍을 사용하여 제작되면서 이벤트와 콜백만으로는 개발자가 원하는 모든 것을 충분히 지원할 수가 없었다.
프로미스는 이런 문제에 대한 해결책이다.
그러면 프로미스는 무엇인가 ??
이러한 프로미스는
성공인지 실패인지 기초한 여러 개의 프로미스를 연결하여 이해하기 쉽고 , 디버깅 하기 쉽다.
이러한 콜백패턴은 여러개의 호출 연결이 쉽다.
하지만 여러개의 콜백패턴을 여러개 호출해서 연결하게 되면...
const condition = true;
const promise = new Promise((resolve, reject) => {
if(condition) {
resolve('성공');
} else {
reject('실패');
}
});
promise
.then(message => console.log(message))// resolve가 호출되면 실행
.catch(error => console.error(error));// reject가 호출되면 실행
프로미스 내부의 [[PromiseState]]
프로퍼티는 프로미스의 상태를 반영하여
pending
이나 fulfuilled
, rejected
로 설정된다.
프로미스 객체에 노출되지 않으므로 프로그램적으로 어떤 상태를 정할 수 없다.
하지만 then()
메서드를 사용하여 프로미스의 상태가 변경 될 때 특정 동작을 취하도록 할 수 있다.
또한 프로미스는 실패 핸들러만 받는 then()
과 동일하게 동작하는 catch()
메서드를 가지게 된다.