- JS엔진은 asynchronous task/operation을 만나면 해당 작업이 처리되는 동안 우선 콜스택에 있는 다음 태스크들을 처리한다. 그리고 해당 비동기 작업이 처리될 준비가 되면 큐에 쌓이게 되는데, 그럼 엔진은 이를 즉시 확인하여 처리하는 것이 아니라, 현재 콜스택에 다른 일이 없는 경우에만(만약 콜스택에 진행중인 일이 있으면 콜스택에 쌓인 일을 먼저 다 처리한다), 그제서야 큐에서 일을 가져와서 비동기 작업을 마무리하게 된다.
- 마치 이메일로 어떤 질문을 보내놓고, 답장이 오는 동안 내 다른 할일을 하다가 여유 시간이 있을때 답장이 왔나를 확인하는 것과 동일하다(asynchronous communication).
- ⇒ 이래서 우리는 JS가 non-blocking 작업을 asynchronous하게 처리한다고 표현하는 것이다.