요청
,결과
,대기(pending)
, 순서
, call stack
, single thread
, asynchronous callback
, task queue
, event queue
, event loop
먼저 동기(Synchronous)는 요청
과 결과
가 동시에 일어나는 것을 말합니다. 요청 결과
가 오래걸리더라도, 요청
한 자리에서 결과
가 주어질때까지 대기
하며 순서
에 맞춰 진행됩니다. 반면, 비동기(Asynchronous)는 요청
과 결과
가 동시에 일어나지 않습니다. 요청
에 대한 응답을 즉시 처리하지 않더라도, 대기
시간동안 다른 요청
에 대한 처리가 가능합니다.
자바스크립트 엔진은 기본적으로 Single Thread
로 동작합니다. 그래서 단일 호출 스택(call stack)
이 존재하며, 이는 한 번에 하나의 일만 순차적으로 처리합니다.
그래서 자바스크립트에서는 이렇게 하나의 작업이 완료될때까지 기다려야 하는 문제점을 해결하기 위해서 비동기 콜백(Asynchronous Callback)
을 사용합니다. 작업이 완료될때까지 대기
가 필요한 callback 함수
들은 자바스크립트 runtime에서 task queue(event queue)
에 저장됩니다. 그리고 task queue
의 작업들은 call stack
의 작업이 모두 끝났을 때, event loop
를 통해 call stack
에 callback 함수
를 넣어주고, 마지막에 실행됩니다.