Promise 객체의 개념과 사용법
개념
Promise는 비동기 작업을 처리하기 위한 JavaScript 객체입니다. 비동기 작업은 일반적으로 서버 요청, 파일 읽기, 데이터베이스 쿼리 등과 같은 작업을 의미합니다. Promise를 사용하면 비동기 작업이 완료되었을 때 정해진 동작을 수행하거나 실패 시 에러를 처리할 수 있습니다.
Promise 객체는 세 가지 상태를 가질 수 있습니다:
- 대기(pending): 비동기 작업이 아직 수행되지 않은 상태입니다.
- 이행(fulfilled): 비동기 작업이 성공적으로 완료된 상태입니다.
- 거부(rejected): 비동기 작업이 실패한 상태입니다.
사용법
Promise 객체는 다음과 같은 방식으로 사용됩니다:
const promise = new Promise((resolve, reject) => {
// 비동기 작업 수행
// 성공 시 resolve() 호출, 실패 시 reject() 호출
});
promise
.then((result) => {
// 비동기 작업이 성공적으로 완료된 경우 실행할 코드
})
.catch((error) => {
// 비동기 작업이 실패한 경우 실행할 코드
})
.finally(() => {
// 비동기 작업 완료 이후 실행할 코드
});
new Promise()
를 사용하여 Promise 객체를 생성합니다. 생성자 함수는resolve
와reject
라는 두 개의 콜백 함수를 매개변수로 받습니다. 이 콜백 함수 내에서 비동기 작업을 처리하고 작업이 완료되면resolve
를 호출하여 성공을 알리거나, 작업이 실패한 경우reject
를 호출하여 실패를 알립니다.then()
메서드는 비동기 작업이 성공적으로 완료된 경우 실행할 코드를 등록합니다.then()
은 체이닝하여 여러 개의then()
을 등록할 수 있으며, 각then()
은 이전 단계의 결과 값을 전달받습니다.catch()
메서드는 비동기 작업이 실패한 경우 실행할 코드를 등록합니다.catch()
는 체이닝하여 여러 개의catch()
를 등록할 수 있습니다.finally()
메서드는 비동기 작업 완료 이후 항상 실행되는 코드를 등록합니다.
Promise를 사용하면 비동기 작업을 보다 체계적으로 처리할 수 있고, 오류 처리도 쉽게 할 수 있습니다. 그러나 Promise 사용 시 콜백 지옥을 피하기 위해 async/await
와 함께 사용하는 것이 좋습니다.
#Promise #JavaScript