notes
42장. 비동기 프로그래밍
모던 JS Deep Dive — 비동기 프로그래밍 모델과 콜백·프라미스 흐름 정리.
참고: 이웅모 《모던 자바스크립트 Deep Dive》 42장 · [MDN Asynchronous](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous)
동기 = 지금 스택에서 끝까지. 비동기 = 나중에 태스크로. 블로킹을 피하려고 콜백·Promise·async가 생겼다. 이벤트 루프 노트와 한 세트.
flowchart TB
STACK[콜 스택] --> EMPTY[비면]
EMPTY --> MACRO[macrotask: timer, I/O]
EMPTY --> MICRO[microtask: promise]
동기 vs 비동기
긴 계산은 스택을 점유 → UI 멈춤. I/O는 비동기 API로.
이벤트 루프 감각
스택 비움 → 마이크로태스크 비움 → 렌더 기회 → 매크로태스크.
console.log('a');
setTimeout(() => console.log('c'), 0);
Promise.resolve().then(() => console.log('b'));
console.log('d');
// a d b c
콜백 패턴의 한계
중첩·에러 전파·제어 어려움 → Promise(45).
실무
- 무거운 작업은 worker/청크
- 타이밍 가정 테스트 flaky
- async 함수에서 에러 경로
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.