프로미스(Promise)는 비동기 작업을 처리하기 위한 자바스크립트의 기능 중 하나입니다. 프로미스는 비동기 작업이 완료되었을 때 결과값이나 오류를 반환하는데 사용됩니다. 이를 통해 코드의 가독성을 높이고 비동기 작업을 보다 간편하게 처리할 수 있습니다.
프로미스란?
프로미스는 비동기 작업을 나타내는 객체입니다. 비동기 작업이란, 결과가 바로 나오지 않고 시간이 걸리는 작업을 말합니다. 예를 들면, 서버에서 데이터를 요청하거나 파일을 읽어오는 작업이 비동기 작업에 해당합니다.
프로미스는 세 가지 상태를 가지고 있습니다.
- 대기(pending): 비동기 작업이 아직 완료되지 않은 상태입니다.
- 이행(fulfilled): 비동기 작업이 성공적으로 완료되어 결과값을 반환한 상태입니다.
- 거부(rejected): 비동기 작업 중 오류가 발생하여 작업이 실패한 상태입니다.
프로미스 사용하기
프로미스를 사용하기 위해서는 new Promise()
를 사용하여 프로미스 객체를 생성해야 합니다. 프로미스 객체를 생성할 때는 콜백 함수를 전달해야 합니다. 이 콜백 함수는 두 개의 매개변수(resolve, reject)를 가지고 있습니다.
- resolve: 비동기 작업이 성공적으로 완료되었을 때 호출되는 함수입니다. 결과값을 인자로 전달하여 이행(fulfilled) 상태로 변경합니다.
- reject: 비동기 작업 중 오류가 발생했을 때 호출되는 함수입니다. 오류를 인자로 전달하여 거부(rejected) 상태로 변경합니다.
new Promise((resolve, reject) => {
// 비동기 작업 수행
// 작업이 완료되면 resolve를 호출하여 이행 상태로 변경
// 작업 중 오류가 발생하면 reject를 호출하여 거부 상태로 변경
});
프로미스 객체를 생성한 후에는 then()
메소드를 사용하여 이행 상태일 경우에 대한 처리를 할 수 있습니다. then()
메소드는 성공 콜백과 실패 콜백을 인자로 받으며, 이행 상태일 경우 성공 콜백이 호출되고 거부 상태일 경우 실패 콜백이 호출됩니다.
promiseObject.then(
function(result) {
// 성공 콜백
},
function(error) {
// 실패 콜백
}
);
프로미스 체이닝
프로미스는 체이닝을 통해 여러 개의 비동기 작업을 연속적으로 처리할 수 있습니다. then()
메소드를 여러 번 호출하여 비동기 작업을 순차적으로 연결할 수 있습니다. 이전 작업이 완료되면 다음 작업이 순차적으로 실행됩니다.
promiseObject
.then(function(result1) {
// 첫 번째 작업 처리
return result1 + 1;
})
.then(function(result2) {
// 두 번째 작업 처리
return result2 * 2;
})
.then(function(result3) {
// 세 번째 작업 처리
console.log(result3);
})
.catch(function(error) {
// 에러 처리
});
결론
프로미스는 자바스크립트에서 비동기 작업을 간편하게 처리하기 위한 기능입니다. 프로미스 객체를 생성하여 비동기 작업을 수행하고, 이행 상태일 경우에 대한 처리를 then()
메소드를 통해 할 수 있습니다. 이를 통해 코드의 가독성을 높일 수 있고, 여러 비동기 작업을 체이닝해서 처리할 수도 있습니다.