web worker 예제


종료된 웹 작업자는 더 이상 메시지에 응답하거나 추가 계산을 수행하지 않습니다. 작업자를 다시 시작할 수 없습니다. 대신 동일한 URL을 사용하여 새 작업자를 만들 수 있습니다. 아래 예제에서는 백그라운드에서 숫자를 계산 하는 간단한 웹 작업자를 만듭니다. 페이지(페이지를 만든 페이지)를 참조하십시오. 이를 염두에 두고 웹 작업자를 만드는 방법을 학습할 수 있습니다. 웹 작업자는 메시지 전달을 통해 주 문서와 상호 작용합니다. 다음 코드는 지정된 파일에서 자바스크립트를 실행하는 워커를 만듭니다. 그러나 웹 작업자는 다른 스레드와의 통신 지점을 신중하게 제어했기 때문에 실제로 동시성 문제를 일으키는 것은 매우 어렵습니다. 스레드가 아닌 구성 요소 또는 DOM에 액세스할 수 없습니다. 또한 직렬화된 개체를 통해 스레드 안팎으로 특정 데이터를 전달해야 합니다.

따라서 코드에 문제를 일으키기 위해 정말 열심히 노력해야합니다. 여기에서 작업자를 만들고 오류 이벤트를 듣기 시작한 것을 볼 수 있습니다. 자바 스크립트에 대한 장애물 남아있는 한 가지는 실제로 언어 자체입니다. 자바 스크립트는 여러 스크립트를 동시에 실행할 수 없습니다 의미 하는 단일 스레드 환경입니다. 예를 들어, UI 이벤트를 처리하고, 많은 양의 API 데이터를 쿼리 및 처리하고, DOM을 조작해야 하는 사이트를 상상해 보십시오. 불행히도 브라우저의 JavaScript 런타임의 제한으로 인해 이 모든 것이 동시에 이루어질 수는 없습니다. 스크립트 실행은 단일 스레드 내에서 수행됩니다. 웹 작업자 내에서 가장 표준자바스크립트 기능을 사용할 수 있습니다.

많이! 웹 작업자는 오랫동안 주변에 있었고 고가의 논리를 실행하는 데 능합니다. 이 논리는 이 블로그 게시물에서 수행한 것보다 훨씬 더 복잡할 것입니다. 서비스 워커는 원본 및 경로에 대해 등록된 이벤트 기반 작업자입니다. 연결된 웹 페이지/사이트를 제어하고, 탐색 및 리소스 요청을 가로채고 수정하고, 리소스를 매우 세분화된 방식으로 캐싱하여 특정 상황에서 앱이 어떻게 작동되는지(예: 네트워크) 제어할 수 있습니다. 사용할 수 없습니다.) 웹 작업자 및 무료 브라우저/컴퓨터 리소스를 종료하려면 terminate() 메서드를 사용하십시오: 작업자에게 메시지를 보내려면 작업자 개체의 postMessage 메서드가 아래와 같이 사용됩니다. onmessage 속성은 이벤트 처리기를 사용하여 작업자의 정보를 검색합니다. aURL은 작업자가 실행하도록 하려는 스크립트의 URL을 나타내는 문자열입니다. 더 이상 사용되지 않는 close() 메서드 버전이 있기 때문에 처음에 닫기()에 대한 설명서를 확인하는 것이 혼란스러울 수 있습니다. 더 이상 사용되지 는 버전은 WorkerGlobalScope 인터페이스에 속합니다. 실제로 만들 수 있는 웹 작업자는 전용 및 공유 웹 작업자의 두 가지 유형이 있습니다.