Promise는 자바스크립트에서 비동기 작업을 관리하고, 해당 작업의 성공 또는 실패 결과를 나중에 사용할 수 있도록 하는 객체이다. 기본적으로 비동기 작업의 완료 여부를 약속해주는 개념이라고 할 수 있다.
자바스크립트는 전통적으로 비동기 처리를 위해 콜백 함수를 사용했다. 하지만 콜백 함수는 다음과 같은 문제점을 가지고 있었다.
Promise는 이러한 문제들을 해결하기 위해 도입되었다.
Promise는 세 가지 상태를 가진다:
const promise = new Promise((resolve, reject) => {
// 비동기 작업 수행
if (/* 작업 성공 */) {
resolve(결과); // 성공 시 resolve 호출
} else {
reject(에러); // 실패 시 reject 호출
}
});
promise
.then((result) => {
// 성공 시 처리
})
.catch((error) => {
// 실패 시 처리
});
이러한 Promise의 한계를 극복하기 위해 async/await 문법이 도입되었다:
async function fetchData() {
try {
const result = await someAsyncOperation();
// 동기적으로 보이는 비동기 코드
} catch (error) {
// 에러 처리
}
}
Async/Await는 Promise 기반의 더 간결하고 읽기 쉬운 비동기 코드 작성을 가능하게 한다.