자바스크립트와 노드는 주로 비동기 프로그래밍을 합니다. 특히 이벤트 주도 방식 때문에 콜백 함수를 자주 사용하는데 이때 콜백 함수 안에 콜백 함수를 그 콜백 함수에 콜백 함수를 사용하게 되면 악명 높은 콜백 헬 이 만들어집니다.
이러한 콜백 헬을 극복하기 위해 ES2015부터 Promise가 생기게 되었습니다.
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가 호출되면 실행
const promise1 = Promise.resolve('성공1');
const promise2 = Promise.resolve('성공2');
Promise.all([promise1, promise2])
.then(result => console.log(result)) // ['성공1', '성공2']
.catch(error => console.error(error)); // promise1이나 promise2 중 하나라도 reject가 되면 실행