한 기사로 Node.js의 이벤트 루프를 빠르게 이해하세요.

青灯夜游
풀어 주다: 2021-07-07 19:34:18
앞으로
1582명이 탐색했습니다.

이 문서에서는Node.js비동기 프로그래밍의 이벤트 루프를 이해하는 데 도움이 됩니다. 이벤트 루프는 Node의 논블로킹 I/O를 구현하는 데 매우 중요한 부분입니다! 이벤트 루프와 비차단 I/O는 C++ 라이브러리 LIBUV의 기본 기능입니다. 이벤트 루프와 비차단 I/O를 이해하면 Node의 비동기 작업이 어떻게 작동하는지 이해할 수 있습니다!

한 기사로 Node.js의 이벤트 루프를 빠르게 이해하세요.

Node의 자체 실행 모델인 이벤트 루프는 콜백 함수를 매우 일반적으로 만듭니다. [추천 학습: "nodejs Tutorial"]

프로세스가 시작되면 Node는while(true)的循环,每执行一次循环体的过程我 们称为Tick。每个Tick와 유사한 프로세스를 생성하여 처리할 이벤트가 있는지 확인하고, 있으면 해당 이벤트와 관련 콜백 함수를 꺼냅니다. 연관된 콜백 함수가 존재하는 경우 해당 함수가 실행됩니다. 그런 다음 더 이상 처리할 이벤트가 없으면 프로세스를 종료하세요

한 기사로 Node.js의 이벤트 루프를 빠르게 이해하세요.
틱 흐름도

이벤트 루프는 Node.js 논블로킹 I/O를 구현하는 데 매우 중요한 부분입니다! 이벤트 루프와 비차단 I/O는 이 C++ 라이브러리의 기본 기능입니다. 이벤트 루프와 비차단 I/O를 이해하고 나면 Node.js의 비동기 작업이 어떻게 작동하는지 이해하게 될 것입니다!LIBUV

코드를 통해 이벤트 루프 시뮬레이션
const eventloop = { queue: [], // 循环方法 loop() { // 不停的检测队列是否还有未循环的消息 while (this.queue.length) { const callback = this.queue.shift(); callback(); } // 执行下一次循环 // 小知识点 JS的 this绑定 setTimeout(this.loop.bind(this), 50); }, // 添加消息到队列 add(callback) { this.queue.push(callback); }, }; eventloop.loop(); setTimeout(() => { eventloop.add(() => { console.log("第一个"); }); }, 500); setTimeout(() => { eventloop.add(() => { console.log("第二个"); }); }, 800);
로그인 후 복사

위는 이벤트 루프의 가장 기본적인 예입니다. 여기에 메시지를 추가하면 일정 시간이 지난 후 처리되지 않은 이벤트가 있는지 감지합니다. 그렇다면 이벤트 처리가 실행됩니다.

모든 이벤트 루프는 새로운 호출 스택입니다

더 많은 프로그래밍 관련 지식을 보려면

프로그래밍 비디오를 방문하세요! !

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

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!