JS에서 EventLoop 사용에 대한 자세한 설명

php中世界最好的语言
풀어 주다: 2018-04-13 11:46:10
원래의
1736명이 탐색했습니다.

이번에는 JS에서 EventLoop을 사용하는 방법에 대해 자세히 설명하겠습니다. JS에서 EventLoop을 사용할 때 주의 사항은 무엇인가요?

예를 들어, 브라우저가 단일 스레드이기 때문에 브라우저 프로세스가 차단되어 인터페이스를 렌더링하거나 다른 코드를 실행할 수 없게 됩니다. 사용자와의 상호 작용.

이는 일반적으로 큰 문제가 아니지만 브라우저가 동시에 여러 개의 유사한 알고리즘을 실행하는 경우 이 문제는 심각해집니다.

특정 경험이 있는 대부분의 js 개발자는 코드의 비동기 실행, 특히 ajax 사용을 이해합니다.

rreee

이 응답으로는 원하는 결과를 얻을 수 없습니다.

대신 대면 방식처럼 콜백 함수를 통해 결과를 얻어야 합니다

// ajax(..) is some arbitrary Ajax function given by a library
var response = ajax('https://example.com/api');
console.log(response);
// `response` won't have the response
로그인 후 복사

또한 다음 코드 async: false는 결코 좋은 생각이 아닙니다.

rreee

위의 예를 통해 비동기 기능이 브라우저 차단과 유사한 문제를 해결하는 데 도움이 될 수 있음을 이해해야 합니다.

물론 setTimeout(콜백, 밀리초)을 통해 동일한 논리를 구현할 수도 있습니다. 비동기식을 이해한다면 다음 코드가 실행될 때 무엇이 ​​출력될까요?

rreee

현재 비동기 처리 메커니즘의 원리는 무엇입니까? 여기에서는 이벤트 루프를 소개합니다. Event Loop

이벤트 루프에는 간단한 작업(태스크)이 있습니다. 콜 스택 및 콜백 큐를 모니터링합니다. 호출 스택이 비어 있으면 queue에서 첫 번째 이벤트를 가져와 호출 스택에 푸시하여 효과적으로 실행합니다.

이 반복을 이벤트 루프에서는 Tick이라고 합니다. 각 이벤트는 단지 함수 콜백입니다.

rreee

이 코드를 실행하세요

setTimeout(...)은 이벤트 루프 대기열에 콜백을 자동으로 배치하지 않습니다.

타이머를 설정합니다. 타이머가 만료되면 브라우저는 콜백을 이벤트 루프에 넣어 향후 틱이 실행되도록 합니다. 그러나 대기열에 추가된 다른 이벤트가 있을 수 있습니다. 콜백은 즉시 실행되지 않습니다.

JavaScript에서 비동기 코드 사용을 시작하는 방법에 대한 많은 기사와 튜토리얼이 있으며, setTimeout(callback, 0)을 사용하는 것이 좋습니다.
이제 이벤트 루프가 수행되는 방식과 setTimeout이 작동하는 방식을 알았습니다.

다음 코드를 더 잘 이해할 수 있습니다

ajax('https://example.com/api', function(response) {
  console.log(response); // `response` is now available
});
로그인 후 복사

대기 시간이 0ms로 설정되어 있어도 브라우저 콘솔의 결과는 다음과 같습니다.

안녕하세요

안녕

callback

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

vue

Baidu 지도에서 마커 오버레이를 제거하는 방법

에서 슬롯 및 슬롯 범위를 사용하는 단계에 대한 자세한 설명

위 내용은 JS에서 EventLoop 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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