
프로그래밍은 동기 프로그래밍, 비동기 프로그래밍으로 나눌 수 있다. 동기 프로그래밍이란 작업을 차례대로 진행하면서 작업의 실행이 완료될때까지 중단될 수 없다. 따라서 모든 작업은 이전 작업의 실행이 완료될 때까지 기다려야 한다. 반면 비동기 프로그래밍에서는 임의의 순서로 또는 동시에 작업이 진행될 수 있다. 자바스크립트는 단일 작업 특성을 갖고 있기 때문에 실행이 오래 걸리는 작업(setTimeOut, 파일 불러오기 등)에서는 다음 작업의 실행이 지연되는 blocking 현상이 발생할 수 있다. 이를 해결하기 위해서는 비동기 처리가 필요하다. 예를 들어, 동기로 프로그램이 작동한다면 짜장면 배달부가 한 집에 배달을 한 뒤, 해당 고객이 짜장면을 다 먹고 난 뒤 그릇을 회수해야 다음 배달을 갈 수 있게 된..