NodeJS에서 비동기의 개념에 대해서

구남규·2021년 4월 29일
0

비동기식 처리방식은 병렬적으로 수행된다 (Non-Blocking processing model)
예를 들어서 서버에서 데이터를 가져올때 수행이 완료될때까지 기다리지않고 다음 태스크를 실행시킨다 이후 서버에서 데이터를 가져오면 이벤트가 발생하는 방식이다

nodeJs에서 비동기 처리는 이벤트 방식으로 풀어낸다 서버 내부에서 클라이언트가 요청하는 비동기 메세지를 Event Loop가 처리한다
Event Loop는 하나의 쓰레드안에서 처리되는 Single-Thread로 이루어져있어서 처리작업이 오래 걸리면 전체 서버 처리에 영향을 줄 수 있슴
대신 짧은 시간 안에 처리된다면 nodejs의 고성능의 장점을 극대화 할 수 있다

비동기식 이벤트 루프 예시

console.log("Hello");

setTimeout(function cb(){
  console.log("there");
},5000)
console.log("World");

Hello가 콜스택에 쌓이고 setTimeout함수는 webapis에서 5초간 기다린 후 task queue로 콜백함수를 보내 다시 콜스택에 쌓이게된다 그 사이에 World는 기다리지 않고 바로 콜스택에 쌓이고 수행이 된다
결과적으로 콘솔에는 Hello, World, there 순으로 찍히게 됨

0개의 댓글