개요
•
Promise
•
Promise 상태
•
주요 메소드
•
기본 예시 코드
•
API 호출 예시 코드
Promise
비동기 작업의 성공 또는 실패 결과를 처리하는 객체
“해당 작업이 완료되거나 실패했을 때 결과를 제공하겠다는 약속”
Promise 상태
상태 | 설명 | 상태 전환 방법 |
Pending | 초기 상태로, 비동기 작업이 아직 완료되지 않은 상태입니다. | 비동기 작업이 시작될 때 |
Fulfilled | 비동기 작업이 성공적으로 완료된 상태입니다. resolve 함수가 호출되어 이 상태로 전환됩니다. | resolve 함수가 호출될 때 |
Rejected | 비동기 작업이 실패한 상태입니다. reject 함수가 호출되어 이 상태로 전환됩니다. | reject 함수가 호출될 때 |
주요 메소드
메서드 | 설명 | 호출 시점 |
then | Promise가 이행되었을 때 또는 거부되었을 때 호출되는 콜백을 설정합니다. onFulfilled는 Promise가 성공했을 때, onRejected는 실패했을 때 호출됩니다. | Promise가 이행되거나 거부되었을 때 |
catch | Promise가 거부되었을 때 호출되는 콜백을 설정합니다. then의 두 번째 인수와 동일한 역할을 합니다. | Promise가 거부되었을 때 |
finally | Promise가 이행되든 거부되든 상관없이 항상 실행되는 콜백을 설정합니다. | Promise가 이행되거나 거부되었을 때 항상 호출 |
기본 예시 코드
let promise = new Promise(function(resolve, reject) {
// 비동기 작업 수행
let success = true; // 작업이 성공했다고 가정
if (success) {
resolve("작업 성공");
} else {
reject("작업 실패");
}
});
promise.then(function(result) {
console.log(result); // 작업 성공 시 실행
}).catch(function(error) {
console.error(error); // 작업 실패 시 실행
}).finally(function() {
console.log("작업 완료"); // 성공 또는 실패와 관계없이 항상 실행
});
JavaScript
복사
API 호출 예시 코드
function fetchData(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.json();
})
.then(data => resolve(data))
.catch(error => reject(error));
});
}
fetchData("https://api.example.com/data")
.then(data => console.log(data))
.catch(error => console.error("Error:", error))
.finally(() => console.log("Fetch attempt finished"));
JavaScript
복사






