JavaScript/비동기/Lesson 16
Promise — *비동기의 표준*
1시간·theory
이 챕터
2/3
Promise — *비동기의 표준*
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ Pending → Fulfilled / Rejected 상태 전이
- ▸✅ .then / .catch / .finally 체이닝
- ▸✅ Promise.all · race · any · allSettled 차이
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
Promise 가 뭐냐
핵심 한 줄
Promise = "지금은 결과가 없지만 나중에 줄게 약속한" 객체. 비동기 작업의 표준. 콜백 지옥을 해결한 2015년 ES6 의 큰 진보.
콜백 지옥 — 옛 방식
콜백 안에 콜백 안에 콜백... 피라미드처럼 들여쓰기 증가. 콜백 지옥.
Promise 방식
체이닝으로 수평적. 에러도 맨 끝 catch 한 번 으로 처리.
Promise 의 3 상태
한 번 fulfilled 또는 rejected 되면 변경 불가.
자주 만나는 Promise
병렬 — Promise.all
세 요청 동시 시작 → 모두 완료 시 결과 반환. 직렬보다 3배 빠름.
주의: 하나라도 실패하면 전체 실패. 부분 실패 허용 이면 Promise.allSettled:
Promise.race — 가장 빠른 하나
흔한 함정
1. catch 누락:
처리 안 된 Promise rejection 은 Unhandled Promise Rejection 경고. 항상 catch.
2. then 안에서 또 then:
3. await 대신 then 남용:
요즘은 async/await 가 표준. then 체이닝은 간단한 경우만.
한 번 정리
- ▸Promise = 미래 결과 약속하는 객체
- ▸
then·catch·finally체이닝 - ▸
Promise.all로 병렬 - ▸모던 코드는 async/await 으로 더 깔끔하게
⚡ 직접 해보기 — Promise 체이닝 + Promise.all
순차 체이닝과 병렬 Promise.all 을 직접 비교.
✏️ JS 코드
📟 콘솔 출력
▶ 실행 버튼을 눌러보세요
⚠️ 브라우저 샌드박스에서 실행 — console.log()만 지원, alert/fetch 불가
🤖 AI 에게 이렇게 요청해보세요
이 lesson 의 개념을 알면 AI 에게 구체적으로 지시할 수 있습니다. 막연한 "고쳐줘" 가 아니라 어휘를 가진 요청 — 그게 토큰 절약의 출발점입니다.
- ▸"이 .then 체인을 async/await 로 바꿔줘"
- ▸"이 코드의 unhandled rejection 가능성을 .catch / try-catch 로 막아줘"
- ▸"이 fetch 들을 Promise.all 로 병렬화해줘"
왜 이게 토큰을 줄이나
개념을 모를 땐 AI 답변을 받고도 "그게 뭐예요?" 를 다시 물어야 합니다. 그 "다시 물음" 이 토큰을 잡아먹습니다. 개념 한 번 익혀두면 대화가 한 번에 끝납니다.
먼저 읽으면 좋은 개념: 이벤트 루프
다음 추천: Async/Await