이번에는 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 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:
에서 슬롯 및 슬롯 범위를 사용하는 단계에 대한 자세한 설명위 내용은 JS에서 EventLoop 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!