비동기식 처리방식은 병렬적으로 수행된다 (Non-Blocking processing model)
예를 들어서 서버에서 데이터를 가져올때 수행이 완료될때까지 기다리지않고 다음 태스크를 실행시킨다 이후 서버에서 데이터를 가져오면 이벤트가 발생하는 방식이다
Node.js에서 비동기 처리는 이벤트 방식으로 진행된다.
서버 내부에서 클라이언트가 요청하는 비동기 메세지를 EventLoop가 처리한다.
EventLoop는 하나의 Thread(스레드)안에서 처리되는 Single-Thread(단일방식쓰레드)로 이루어져 있어서 혹시라도 처리작업이 오랜 시간이 걸리면 전체 서버 처리에 영향을 줄 수 있지만 짧은 시간안에 처리되는 요청이라면 node.js의 사용이 적합하다고 볼 수 있다.
비동기식 이벤트 루프 예시
console.log("Hello");
setTimeout(function cb(){
console.log("there");
},5000)
console.log("World");
Hello가 콜스택에 쌓이고 setTimeout함수는 webapis에서 5초간 기다린 후 task queue로 콜백함수를 보내 다시 콜스택에 쌓이게된다 그 사이에 World는 기다리지 않고 바로 콜스택에 쌓이고 수행이 된다
결과적으로 콘솔에는 Hello, World, there 순으로 출력된다.