SMALL
안녕하세요😊 코드카인 여러분!
오늘은 자바스크립트에서 비동기 처리를 위해 사용되는 강력한 도구, Promise의 구조와 개념을 살펴볼 거예요! 😄 이 글을 읽고 나면 비동기 코드를 훨씬 깔끔하고 직관적으로 작성할 수 있게 될 거예요. 약속해요! 💪
🌟 Promise란 무엇인가요?
Promise를 간단히 설명하자면, "나중에 결과를 줄게!"라는 약속을 표현하는 객체입니다. 우리가 음식을 배달 주문할 때를 떠올려 보세요. 😊
- 음식을 주문하면 바로 먹을 수 없죠? (비동기 작업 시작)
- 시간이 지나면 음식이 도착하거나, 배달이 취소될 수도 있어요. (성공 또는 실패)
- 약속된 결과에 따라 행동을 합니다. (결과 처리)
이 과정이 자바스크립트의 Promise와 아주 비슷합니다!
🧩 Promise의 기본 구조
Promise의 구조는 다음과 같습니다:
const myPromise = new Promise((resolve, reject) => {
// 비동기 작업 수행
if (성공) {
resolve(결과); // 작업 성공 시 호출
} else {
reject(에러); // 작업 실패 시 호출
}
});
💡 중요한 키워드
- resolve: 약속을 지킨다! 즉, 작업이 성공했을 때 호출되는 함수입니다.
- reject: 약속을 못 지켰다! 즉, 작업이 실패했을 때 호출되는 함수입니다.
🔍 실전 예제: 간단한 Promise 만들기
배달 예제를 코드로 표현해 볼게요!
const orderFood = (isAvailable) => {
return new Promise((resolve, reject) => {
console.log("🍔 음식 주문 중...");
setTimeout(() => {
if (isAvailable) {
resolve("🍕 음식이 도착했습니다!");
} else {
reject("🚫 음식 배달이 취소되었습니다.");
}
}, 2000);
});
};
// Promise 사용하기
orderFood(true)
.then((message) => {
console.log(message); // 성공: 음식 도착
})
.catch((error) => {
console.error(error); // 실패: 배달 취소
});
🛠️ Promise 메서드 살펴보기
1. then()
resolve
로 넘어온 값을 처리합니다. 성공적인 결과를 받을 때 사용됩니다.
2. catch()
reject
로 넘어온 에러를 처리합니다. 약속이 깨졌을 때 실행됩니다.
3. finally()
성공 여부와 상관없이 항상 실행되는 코드입니다. 리소스 정리 등에 유용하게 쓰입니다.
orderFood(false)
.then((message) => {
console.log(message);
})
.catch((error) => {
console.error(error);
})
.finally(() => {
console.log("🍽️ 배달 프로세스가 끝났습니다!");
});
💬 일상 속 비유: Promise.all과 Promise.race
- Promise.all
마치 여러 음식을 동시에 주문하고 모든 음식이 도착할 때 식사를 시작하는 것과 같아요.
Promise.all([orderFood(true), orderFood(true)])
.then((results) => {
console.log("모든 음식이 도착했습니다:", results);
})
.catch((error) => {
console.error("문제가 발생했습니다:", error);
});
- Promise.race
여러 배달 중 가장 먼저 도착한 음식을 바로 받는 상황과 비슷해요.
Promise.race([orderFood(true), orderFood(false)])
.then((result) => {
console.log("가장 먼저 도착한 음식:", result);
})
.catch((error) => {
console.error("문제가 발생했습니다:", error);
});
😊 마무리하며..
Promise는 비동기 작업을 깔끔하게 관리하고, 직관적인 코드를 작성할 수 있도록 도와주는 훌륭한 도구입니다. 특히 async/await
와 함께 사용하면 더더욱 강력해지죠! 😊
"코드는 단순하고 읽기 쉬워야 한다."는 철학으로, 오늘 배운 Promise를 활용해 프로젝트를 더 깔끔하게 만들어 보세요! 화이팅! 💪
728x90
반응형
SMALL
'JavaScript > JavaScript 비동기 프로그래밍' 카테고리의 다른 글
자바스크립트 이벤트 루프, 싱글 스레드의 비밀 풀기 - 코드카인 티스토리 (0) | 2025.02.10 |
---|---|
콜백 함수와 콜백 지옥: 더 이상 무섭지 않은 JavaScript 비밀 - 코드카인 티스토리 (0) | 2025.02.05 |
JavaScript로 Ctrl+S 방지! 브라우저 기본 기능 제어하기 - 코드카인 티스토리 (0) | 2025.01.23 |
getElementById와 querySelector, innerHTML과 appendChild 활용법 - 코드카인 티스토리 (0) | 2025.01.23 |