> 웹 프론트엔드 > JS 튜토리얼 > Node.js 이벤트 루프

Node.js 이벤트 루프

Susan Sarandon
풀어 주다: 2024-12-14 01:19:14
원래의
292명이 탐색했습니다.

안녕하세요 여러분
이번 첫 번째 글에서는 자바스크립트를 정말 이해하고 싶은 사람들이 고민하는 주제 중 하나인 이벤트 루프(메인 루프, 메인 스레드, 이벤트 스레드 등...)에 대해 쓰겠습니다. 또한 이 글은 전문적으로 작성한 것이 아닌 제가 직접 작성한 메모를 모아놓은 것이라는 점을 덧붙이고 싶습니다. 저의 실수에 대해 미리 사과드립니다.
아래 이미지에서는 Nodejs의 javascript v8 엔진, 이벤트 루프 메커니즘 및 libuv 라이브러리를 볼 수 있습니다. Javascript가 제공할 수 없는 일부 작업을 수행하는 것은 libuv 라이브러리입니다. 브라우저에서 자바스크립트를 실행하면 브라우저에서 제공하는 웹 API로 작업을 실행합니다.

이벤트 루프는 아키텍처 디자인 패턴입니다. 이 접근 방식이 선호되는 이유는 JavaScript의 작동 원리와 직접적인 관련이 있습니다. Javascript는 단일 스레드 및 비차단 I/O를 실행합니다. 즉, 단일 스레드에서 실행되지만 시간이 많이 걸리는 작업을 실행하는 동안 차단되지 않고 계속 작동합니다. 이벤트 루프 아키텍처로 이 문제를 해결합니다.

프로그램이 실행되면 전역 실행 컨텍스트가 생성되어 호출 스택에 추가됩니다. 이는 프로그램 흐름이 완료될 때까지 호출 스택에서 제거되지 않습니다. 실제로 각 함수에 대해 실행 컨텍스트가 생성됩니다. 함수가 완료되면 호출 스택에서 제거됩니다. 하지만 항상 그런 식으로 작동하는 것은 아닙니다.

경우에 따라 기능이 완료되는 데 시간이 걸릴 수 있습니다. 예를 들어 네트워크 요청이나 파일의 데이터 읽기/쓰기 작업, DOM 이벤트(전부는 아님) 등이 있습니다. 이 경우 함수는 스레드 풀 또는 웹 API에 의해 처리됩니다. 프로세스가 완료되면 콜백 큐(태스크 큐)에 콜백 함수가 추가됩니다. 차례가 오면(콜 스택이 비워질 때) 콜 스택으로 전송되어 처리됩니다. 처리되면 호출 스택에서 제거됩니다. 마이크로태스크 대기열의 작업은 콜백 대기열의 작업보다 먼저 처리됩니다. 이러한 예는 Promise, Mutation Observer, queueMicrotask

입니다.

Node.js의 스레드 풀과 브라우저의 Web Worker는 집중적인 CPU 성능이 필요한 비동기 작업과 작업을 실행하는 데 사용됩니다. 여기서는 사용법과 범위의 차이점을 다루지 않겠습니다. 내가 말하고 싶은 것은 이것이다. JavaScript로 처리할 수 없는 작업을 다양한 메커니즘을 사용하여 처리할 수 있도록 합니다.

Node.js Event Loop

위 내용은 Node.js 이벤트 루프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿