웹 워커는 HTML5 사양의 기능으로, 웹 애플리케이션의 기본 스레드와 무관하게 JavaScript가 백그라운드에서 실행할 수 있습니다. 이러한 작업을 분리하면 웹 개발자는 사용자 인터페이스의 응답 성에 영향을 미치지 않고 계산 집약적 인 작업을 수행 할 수 있습니다.
백그라운드 처리를 위해 웹 작업자를 사용하려면 일반적으로 다음과 같은 단계를 따릅니다.
worker.js
라는 파일을 만들 수 있습니다. 작업자 인스턴스화 : 메인 JavaScript 파일에서 Worker
객체를 작업자 스크립트로 인스턴스화하여 새 작업자를 만듭니다. 예를 들어:
<code class="javascript">const myWorker = new Worker('worker.js');</code>
메시지 보내기 : postMessage
메소드를 사용하여 메시지를 보내서 작업자와 통신하십시오. 작업자는 message
이벤트에 이벤트 리스너를 사용하여 이러한 메시지를받을 수 있습니다.
<code class="javascript">myWorker.postMessage({command: 'start', data: someData});</code>
응답 처리 : 메인 스레드에서 message
이벤트에 대한 이벤트 리스너를 사용하여 작업자로부터 보낸 메시지를 듣습니다.
<code class="javascript">myWorker.onmessage = function(e) { console.log('Message received from worker', e.data); };</code>
작업자 종료 : 완료되면 terminate
방법으로 작업자를 종료 할 수 있습니다.
<code class="javascript">myWorker.terminate();</code>
이러한 방식으로 웹 작업자를 사용하면 메인 스레드를 얼리거나 느리게하지 않고 배경 처리가 발생하여 원활한 사용자 경험을 유지할 수 있습니다.
웹 작업자는 여러 가지 방법으로 웹 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.
특정 유형의 작업은 특히 웹 작업자의 성격과 요구 사항으로 인해 적합합니다.
예, 웹 워커는 서로 통신 할 수 있으며, 코디네이터 역할을하는 메인 스레드가 촉진하는 프로세스입니다. 이 커뮤니케이션을 달성 할 수있는 방법은 다음과 같습니다.
메인 스레드 허브 : 메인 스레드는 중앙 허브 역할을하여 한 작업자로부터 메시지를 받고 다른 작업자에게 전달할 수 있습니다. 이 방법은 기본 스레드가 통신 프로세스에 관여해야합니다.
메인 스레드에서 :
<code class="javascript">const worker1 = new Worker('worker1.js'); const worker2 = new Worker('worker2.js'); worker1.onmessage = function(e) { if (e.data.command === 'sendToWorker2') { worker2.postMessage(e.data.message); } }; worker2.onmessage = function(e) { if (e.data.command === 'sendToWorker1') { worker1.postMessage(e.data.message); } };</code>
공유 근로자 : 근로자 간 커뮤니케이션을위한 또 다른 방법은 공유 근로자를 사용하는 것입니다. 공유 작업자는 여러 스크립트로 액세스 할 수있어 응용 프로그램의 다른 부분이 단일 공유 작업자를 통해 통신 할 수 있습니다.
공유 작업자 생성 :
<code class="javascript">const sharedWorker = new SharedWorker('sharedWorker.js'); sharedWorker.port.onmessage = function(e) { console.log('Message received from shared worker', e.data); }; sharedWorker.port.postMessage({command: 'message', data: someData});</code>
직접 노동자 커뮤니케이션 : 덜 일반적이고 간단하지는 않지만 작업자는 MessageChannel
및 MessagePort
사용하여 직접 통신 할 수 있습니다. 이 접근법은 주 스레드가 촉진 할 수있는 작업자 사이에 채널을 설정해야합니다.
메인 스레드에서 :
<code class="javascript">const channel = new MessageChannel(); const worker1 = new Worker('worker1.js'); const worker2 = new Worker('worker2.js'); worker1.postMessage('connect', [channel.port1]); worker2.postMessage('connect', [channel.port2]);</code>
이러한 방법을 사용함으로써 웹 워커는 서로 효율적으로 통신하여 웹 응용 프로그램 내에서보다 복잡한 배경 처리 시나리오를 가능하게 할 수 있습니다.
위 내용은 웹 워커 란 무엇입니까? 배경 처리에 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!