# * 비동기적 프로그래밍 - Intro
Javascript 는 단일 스레드에서 동작하기 때문에 한 번에 한 가지 일만 할 수 있다. 싱글 스레드 만의 장점으로 멀티스레드 프로그래밍에서 겪어야 하는 골치 아픈 문제들을 신경 안써도 된다는 점이 있지만 사용자 입력이나, 웹 통신 같은 비동기적 관점으로 프로그래밍 하는게 어렵게 느껴지는 점을 단점으로 꼽을 수 있다.
# 비동기적 테크닉 사용 3 가지
- Ajax 호출, 네트워크 통신
- 파일 읽고, 쓰기 같은 파일시스템 작업
- 시간을 지연해야하는 기능
# 콜백, 프로미스 비유 예시
A형 간염 때문에 사람들이 많이 아프자, 많은 사람들이 예방접종을 하루 빨리 맞기 위해서 보건소에 몰려들었다.
- "콜백 보건소" 에서는 사람들이 줄서고 기다리지 않도록, 사람들의 전화번호를 받았다가 차례가 돌아오면 전화를 해준다. (= 콜백 방식)
- "프로미스 보건소" 에서는 차례가 되면 진동이 울리는 호출기를 사람들에게 전해준다. (= 프로미스 방식)
# 비유 예시 요약
- 콜백 방식은 차례가 되면 알 수 있도록 수단을
당사자가 일처리하는 곳에
넘겨준다. - 프로미스 방식은 차례가 되면 알 수 있도록 수단을
일처리하는 곳에서 당사자에게
넘겨준다.
# 자바스크립트 비동기적 프로그래밍 4 가지 패러다임
제너레이터 자체로는 비동기적 프로그래밍을 지원하지 않기 때문에 프로미스나 콜백과 함께 사용해야 한다. 마찬가지로 프로미스도 콜백과 함께 사용해야한다.