HTML5 웹 워커 API를 사용하면 기본 브라우저 스레드와 별개로 백그라운드에서 JavaScript 코드를 실행할 수 있습니다. 이는 장기 실행 작업을 수행하면서 사용자 인터페이스 (UI)를 차단하는 것을 방지합니다. 사용 방법은 다음과 같습니다.
작업자 생성 : 스크립트 URL을 사용하여 새 작업자를 만드는 것으로 시작합니다. 이 스크립트에는 백그라운드에서 실행하려는 코드가 포함됩니다. 이것은 기본 JavaScript 파일에서 수행됩니다.
<code class="javascript">const worker = new Worker('worker.js');</code>
이것은 백그라운드 스레드를 나타내는 Worker
객체를 만듭니다. 'worker.js'
실제 경로로 교체하십시오.
Worker Script ( worker.js
) : 이 스크립트에는 백그라운드에서 실행될 코드가 포함되어 있습니다. 이 스크립트에는 메인 스레드와 별개의 글로벌 범위가 있습니다. 기본 스레드의 DOM 또는 글로벌 변수에 직접 액세스 할 수 없습니다. 간단한 예는 다음과 같습니다.
<code class="javascript">self.onmessage = function(e) { let result = e.data * 2; self.postMessage(result); };</code>
이 작업자 스크립트는 기본 스레드의 메시지 ( onmessage
)를 듣습니다. e.data
속성의 데이터를 수신하고 계산을 수행하며 결과를 postMessage
사용하여 기본 스레드로 다시 보냅니다. self
근로자의 글로벌 범위를 나타냅니다.
Communication (Main Thread) : 기본 스레드는 postMessage()
사용하여 작업자에게 메시지를 보낼 수 있습니다.
<code class="javascript">worker.postMessage(10); // Send the number 10 to the worker</code>
메시지 수신 (기본 스레드) : 메인 스레드는 onmessage
이벤트 리스너를 사용하여 작업자의 메시지를 듣습니다.
<code class="javascript">worker.onmessage = function(e) { console.log('Result:', e.data); // Log the result received from the worker };</code>
근로자 종료 : 근로자와 함께 끝나면 자원을 확보하기 위해 종료해야합니다.
<code class="javascript">worker.terminate();</code>
기존의 JavaScript 실행은 기본 스레드에서 실행되므로 장기 실행 작업 (예 : 복잡한 계산, 대규모 파일 처리, 네트워크 요청)이 UI를 차단하여 웹 페이지를 응답하지 않고 사용자에게 좌절시킵니다. 웹 작업자는 몇 가지 주요 장점을 제공합니다.
아니요, 웹 워커는 DOM에 직접 액세스 할 수 없습니다. 이것은 잠재적 충돌을 방지하고 안정성을 보장하는 중요한 보안 기능입니다. 그러나 첫 번째 섹션에서 보여 지듯이 postMessage()
메소드를 사용하여 기본 스레드와 작업자간에 데이터를 교환 할 수 있습니다.
postMessage()
메소드를 사용하면 기본 스레드와 작업자 사이에 구조화 된 데이터 (예 : 숫자, 문자열, 배열, 객체)를 보낼 수 있습니다. 메인 스레드와 작업자는 데이터를 수신하고 처리하기 위해 message
이벤트를 들어야합니다. 구조화 된 복제 가능한 데이터 만 전달할 수 있습니다. 이는 데이터가 참조로 공유되지 않고 복사되었음을 의미합니다. 대형 데이터 세트를 효율적으로 전송하려면 전송 가능한 객체 사용을 고려하십시오.
웹 작업자는 상당한 이점을 제공하지만 몇 가지 함정을 피해야합니다.
error
및 message
이벤트를 올바르게 처리하는 것은 작업자 라이프 사이클을 관리하고 누출을 피하는 데 중요합니다.위 내용은 백그라운드 처리에 HTML5 웹 워커 API를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!