----비동기 실행 메커니즘은 다음과 같습니다.
1. 왼쪽 및 오른쪽 동기화 작업이 메인 스레드에서 실행되어 실행 스택을 형성합니다
2. 메인 스레드 값에는 작업 큐도 있습니다. 비동기 작업에 실행 결과가 있으면 이벤트가 작업 큐에 배치됩니다.
3. 실행 스택의 모든 동기 작업이 실행되면 , 시스템은 작업 큐와 실행될 작업에 해당하는 작업을 읽습니다. 작업은 메인 스레드에 배치되고 메인 스레드는 상태 를 기다리다가 끝나고 실행 스택에 들어가서 실행을 시작합니다. 🎜>
(메인 스레드가 비어 있는 한 작업 대기열을 읽습니다. 이는JavaScript실행 메커니즘이므로 이 프로세스가 반복됩니다.)
4 위를 반복합니다. 메인 스레드의 단계----JavaScript가 단일 스레드인 이유:1.JavaScript 브라우저 스크립트 언어로서 한 번에 한 가지 작업만 수행할 수 있습니다. 다중 스레드는 충돌을 일으킬 수 있으므로 JavaScript는 단일 스레드만 가능합니다----setTimeout()은 이벤트를 "작업 대기열"에만 삽입한다는 점에 유의해야 합니다. 메인 스레드는 지정된 콜백 함수. 현재 코드가 오래 걸리면 시간이 오래 걸릴 수 있으므로 setTimeout()에서 지정한 시간에 콜백 함수가 실행된다는 보장은 없습니다. ---
"태스크 큐"는 이벤트 큐입니다(메시지 큐로도 이해될 수 있음). IO 장치가 작업을 완료하면 "태스크에 추가됩니다. queue" 관련 비동기 작업이 "실행 스택"에 들어갈 수 있음을 나타내는 이벤트입니다. 메인 스레드는 "작업 대기열"을 읽습니다. 이는 그 안의 이벤트를 읽는다는 의미입니다.
IO 장치 이벤트 외에도 "작업 대기열"의 이벤트에는 일부 사용자 생성 이벤트(예: 마우스 클릭, 페이지 스크롤 등)도 포함됩니다. 콜백 함수가 지정되어 있는 한 이러한 이벤트는 발생 시 "작업 대기열"에 들어가고 주 스레드가 읽을 때까지 기다립니다.
소위 "콜백 함수"(콜백)는 메인 스레드에 의해 중단되는 코드입니다. 비동기 작업은 콜백 함수를 지정해야 합니다. 메인 스레드가 비동기 작업 실행을 시작하면 해당 콜백 함수가 실행됩니다.
"태스크 큐"는 선입선출(FIFO) 데이터 구조입니다. 첫 번째 순위의 이벤트는 메인 스레드에서 먼저 읽혀집니다. 기본 스레드의 읽기 프로세스는 기본적으로 자동으로 실행 스택이 지워지자마자 "작업 대기열"의 첫 번째 이벤트가 자동으로 기본 스레드에 들어갑니다. 하지만 나중에 언급되는 "
Timer" 기능으로 인해 메인 스레드는 먼저 실행 시간을 확인해야 하며, 특정 이벤트는 지정된 시간 이후에만 메인 스레드로 반환될 수 있습니다. ----자바스크립트에 코드가 없을 때 즉시 실행됩니다. 프로세스가 유휴 상태일 때 최대한 빨리 실행됩니다.
위 내용은 JavaScript의 비동기 실행 메커니즘 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!