NodeJs 입문전 JS의 Callback 을 알아보았다.
사실 콜백에 대한 좋은 자료는 너무 많다.
콜백은 function을 통해 function을 호출. Linking funcion with function
![](https://velog.velcdn.com/images/saro3/post/138198fe-267c-469c-9809-4d22ec15cd47/image.jpg)
-
스택에 setTimeout은 호출되면 WebAPIs로 이동하게 된다. 그리고 1이 들어고 LIFO를 정상적으로 해준다.
-
4초 지정된 setTimeout은 4초후 Task Queue로 이동한다. FIFO
-
EVENT LOOP 의 도움을 통해 모든 스택이 끝나고 다시 스택에 들어가 실행하게된다.
궁금증
- 그렇다면 스택에 큰 데이터를 호출하는 api 선언 후, 끊이 없이 스택이 다른 행위로 인해 실행 쌓이게 된다면, task queue에서 준비가 완료된 데이터는 어떻게 되는건가? 준비가 된 친구들만 빼오는 인터페이스가 따로 있을까?
해결
- 유툽+매니저님을 통해 필요한것만 queue에서 가져올수 없으며 stack이 비어야할때 까지 기다리게 된다고 한다. 그래서 처음부터 개발자들이 await 을 통행 실행 시키는 방식이 있다고 한다. 뭔가 아쉽지만 대안 있어서 잘 활용하면 큰 문제는 없을것 같다.
궁금증 해결 확인
- setTimeout을 계속 뽑았다. 확실히 callback queue에서 eventLoop을 통해 스택으로 이동 후 실행 했을때 속도, 거기서 pop할때까지 기다리는 시간등 다양한 요인으로 인해 task queue에 setTimeout 이 쌓였고 결구 5초뒤에 실행되야하는 함수들이 9초까지 연장되는것을 볼수있었다.