최근에 NodeJS (및 JS)를 읽었으며 NodeJs에서 콜 백이 작동하는 방식에 대해 약간 혼란 스럽습니다. 우리는 같은 것을 할 가정 :스택이 NodeJ에서 어떻게 작동합니까?
setTimeout(function(){
console.log("World");
},1000);
console.log("Hello");
출력 : "안녕하세요"
지금까지 내가 JS 이벤트 루프가 하나의 큰 스택하지만 것입니다 때문에 단일 스레드입니다 읽은 무엇에, 콜백 함수에 큰 호출을 두지 말라고 들었습니다.
1)
좋아, 그래서 내 첫 번째 질문은 하나의 스택을 가정한다하는 것은 콜백 함수는 메인 이벤트 루프 스레드에서 실행됩니까? 그렇다면 우리가 콜백 (db에서 가져오고 요청을 푸시)을 통해 콘텐츠를 제공하는 사이트를 가지고 있고 1000 개의 동시 사용자가 있는데 기본적으로 1000 명의 사용자가 기본적으로 동기식으로 서비스되고 있습니다. 메인 스레드가 각 콜백 함수에 들어갑니다. 그러면 메인 이벤트 루프가 계속 진행됩니까? 이 경우, 정확히 얼마나 동시입니까?
2) 어떻게 스택에 추가 콜백 기능이 그렇게 말할 수입니다 내 코드 같았다 다음
setTimeout(function(){
console.log("Hello");
},1000);
setTimeout(function(){
console.log("World");
},2000);
시간 제한도 발생하기 전에 다음 콜백 함수가 스택에 추가됩니까? 그렇다면 콜백 함수가 준비되어 있는지 (또는 다른 메커니즘이 있는지) 메인 스레드에 알리는 플래그가 설정되어 있습니다. 이것이 실제로 일어난다면, 특히 콜백 함수가있는 커다란 웹 애플리케이션의 경우에는 스택을 부 풀리지 않고, 스택이 클수록 쓰레드가 전체를 단계적으로 실행해야하기 때문에 더 오래 걸리는 모든 것이 실행됩니다.