먼저 JS의 실행 원리에 대해 이야기해 보겠습니다. js 엔진이 js 코드를 실행할 때 단일 스레드입니다. 즉, JS 코드를 동시에 실행하는 프로세스는 하나만 있고 콜백 함수도 실행됩니다. 하나씩 (코드가 아닌 이벤트 순서대로) 순서로). JS의 비동기 통신 및 타이밍은 js 스레드 컨텍스트와 관계없이 다른 스레드에 의해 구현됩니다. JS 타이밍 작업을 예로 들면, JS 엔진이 setTimeout(callbackFunction, 100) 작업을 실행할 때 100밀리초의 타이밍이 필요하다는 것을 타이밍 스레드에 알리고 JS 엔진이 이벤트 루프에 들어갑니다. 100밀리초 후에 타이밍 엔진은 만료된 이벤트를 이벤트 큐에 추가합니다. JS 엔진은 대기열에서 시간 초과 이벤트를 읽고 callbackFunction을 실행합니다. 여러 이벤트가 이벤트 큐에 동시에 추가되면 JS 엔진은 콜백을 하나씩만 실행합니다. 비동기식의 경우에도 마찬가지입니다. JS 코드는 통신 요청을 시작하고 통신 스레드는 통신 작업을 수행하며 작업이 완료된 후 완료 이벤트를 이벤트 큐에 추가합니다. JS 엔진은 대기열에서 이벤트를 가져와 콜백을 호출하여 통신 결과를 처리합니다. JS 엔진은 콜백 함수 실행 시 다른 이벤트에 동시에 응답할 수 없습니다.
먼저 JS의 실행 원리에 대해 이야기해 보겠습니다. js 엔진이 js 코드를 실행할 때 단일 스레드입니다. 즉, JS 코드를 동시에 실행하는 프로세스는 하나만 있고 콜백 함수도 실행됩니다. 하나씩 (코드가 아닌 이벤트 순서대로) 순서로). JS의 비동기 통신 및 타이밍은 js 스레드 컨텍스트와 관계없이 다른 스레드에 의해 구현됩니다. JS 타이밍 작업을 예로 들면, JS 엔진이 setTimeout(callbackFunction, 100) 작업을 실행할 때 100밀리초의 타이밍이 필요하다는 것을 타이밍 스레드에 알리고 JS 엔진이 이벤트 루프에 들어갑니다. 100밀리초 후에 타이밍 엔진은 만료된 이벤트를 이벤트 큐에 추가합니다. JS 엔진은 대기열에서 시간 초과 이벤트를 읽고 callbackFunction을 실행합니다. 여러 이벤트가 이벤트 큐에 동시에 추가되면 JS 엔진은 콜백을 하나씩만 실행합니다. 비동기식의 경우에도 마찬가지입니다. JS 코드는 통신 요청을 시작하고 통신 스레드는 통신 작업을 수행하며 작업이 완료된 후 완료 이벤트를 이벤트 큐에 추가합니다. JS 엔진은 대기열에서 이벤트를 가져와 콜백을 호출하여 통신 결과를 처리합니다. JS 엔진은 콜백 함수 실행 시 다른 이벤트에 동시에 응답할 수 없습니다.
JS의 웹 워커는 메인 스레드를 차단하지 않고 백그라운드 스레드에서 일부 대규모 작업을 수행할 수 있습니다. 그러나 postmessage를 통해 메인 스레드와 통신하지만 DOM 및 특정 API를 작동할 수 없습니다. 세부.
Javascript는 단일 스레드입니다.
Javascript는 멀티스레드 효과를 얻으려면 node.js를 고려하여 노드 이벤트를 통해 목표를 달성할 수 있습니다.
브라우저에서 사용한다면 이제 백그라운드에서 일부 js를 실행할 수 있는 서비스 워커가 있는데, 이는 마치 추가 스레드를 여는 것과 같습니다. 잘은 모르지만 필요하시면 알아보시면 됩니다