← 글 목록

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에 체크리스트, 버그 리포트에 재현+기대/실제.