[Advanced Node JS] 1 - 이벤트 루프
2750 단어 javascript
이벤트 루프는 또한 C/C++ 또는 Java와 같은 다른 클래식 프로그래밍 언어 간의 가장 큰 차이점입니다.
노드 JS 대 브라우저
브라우저와 Node JS 모두 자체 이벤트 루프가 있습니다. Node JS 이벤트 루프는 약간 복잡하고 더 많은 단계가 있지만 둘 다 동일한 개념을 공유합니다. 브라우저의 이벤트 루프를 소개하겠습니다.
동기 호출 대 비동기 호출
동기식 호출은 다른 프로그래밍 언어와 마찬가지로 스택으로 이동합니다. 스택이 비워질 때까지 실행됩니다.
그러나 비동기 호출은 Queue(이벤트 루프)로 이동합니다. 다음은 이벤트 루프가 간단한 코드로 표시되는 방식입니다.
while (queue.waitForMessage()) {
queue.processNextMessage();
}
메시지 폴링은 스택이 비어 있을 때 발생합니다. 따라서 모든 동기 호출이 먼저 처리됩니다. 동기 함수가 먼저 스택에 푸시되기 때문에 대기 중인 모든 함수(메시지)가 처리될 때까지 기다려야 합니다.
// Synchronous Call
console.log("1: Pushed to stack");
// Asynchronous Call
setTimeout(()=>{
console.log("1: Pushed to queue");
}, 1000);
// Synchronous Call
console.log("2: Pushed to stack");
// > Output:
// 1: Pushed to stack
// 2: Pushed to stack
// 1: Pushed to queue
함수 처리는 스택이 다시 비워질 때까지 계속됩니다. 그런 다음 이벤트 루프는 대기열에 있는 다음 메시지를 처리합니다(있는 경우). 대기열의 각 메시지에는 기능이 포함되어 있습니다. 따라서 큐에서 새 메시지를 폴링하면 스택 맨 위에 함수가 푸시됩니다.
함수의 작업량이 많을 때 큐(이벤트 루프)를 사용하고 싶습니다. 일반적으로 웹 브라우저에서
setTimeout
, eventListener
와 같은 웹 API를 호출하면 해당 함수 호출이 대기됩니다.
Reference
이 문제에 관하여([Advanced Node JS] 1 - 이벤트 루프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/_ben/advanced-node-js-1-event-loop-3i0l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)