Single Thread 언어, JavaScript
JavaScript는 한 번에 하나의 일만 수행할 수 있는 Single Thread 언어로 동시에 여러 작업을 처리할 수 없음
즉 JavaScript는 하나의 작업을 요청한 순서대로 처리할 수 밖에 없다
그러면 어떻게 Single Thread인 JavaScript가 비동기 처리를 할 수 있을까?
[참고] Thread란?
작업을 처리할 때 실제로 작업을 수행하는 주체로,
multi-thread라면 업무를 수행할 수 있는 주체가 여러 개라는 의미
JavaScript Runtime
비동기 처리를 할 수 있도록 도와주는 환경이 필요함
측정 언어가 동작할 수 있는 환경을 "런타임"이라 함
브라우저 환경에서의 비동기 동작
Call Stack
Web API
Task Queue
Event Loop
비동기 처리 동작 방식
비동기 처리 동작 요소
Call Stack
Web API
Task Queue
Event Loop
그림으로 보는 비동기 처리(Runtime)
정리
- JavaScript는 한번에 하나의 작업을 수행하는 Single Thread언어로 동기적 처리를 하지만, 브라우저 환경에서는 Web API에서 처리된 작업이 지속적으로 Task Queue를 거쳐 Event Loop에 의해 Call Stack에 들어와 순차적으로 실행됨으로써 비동기 작업이 가능한 환경이 됨