Search
Duplicate
moon
sun

Promise

개요

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
복사