웹 워커

Web worker
웹 워커
상황생활 기준
시작한 해2009년 4월 3일(2009-04-03)
초판2009년 4월 3일(2009-04-03)
조직
위원회.와트
에디터이안 힉슨
도메인
웹 사이트

World Wide Web Consortium(W3C) 및 Web Hypertext Application Technology Working Group(WHATWG)에 의해 정의된 웹 워커는 동일한 HTML [1]페이지에서 실행되는 스크립트와는 별도로 백그라운드에서 실행되는 JavaScript 스크립트입니다.웹 워커는 대부분의 경우 멀티 코어 CPU를 [2]보다 효율적으로 사용할 수 있습니다.

W3C와 WHATWG는 웹 워커를 클릭이나 기타 사용자의 조작에 응답하는 스크립트에 의해 중단되지 않는 장기 실행 스크립트로 간주하고 있습니다.이러한 작업자가 사용자 활동에 의해 중단되는 것을 방지하면 백그라운드에서 긴 작업을 수행하는 동시에 웹 페이지가 응답성을 유지할 수 있습니다.

웹 워커의 사양은 HTML Living [1]Standard의 일부입니다.

개요

WHATWG가 상정하고 있듯이 웹 워커는 비교적 무거운 편이며 대량 사용을 의도하고 있지 않습니다.이들은 높은 시작 성능 비용과 높은 인스턴스당 메모리 [1]비용으로 수명이 길어질 것으로 예상됩니다.

웹 워커는 HTML 문서의 스크립트 컨텍스트 밖에서 실행됩니다.따라서 DOM에 액세스할 수 없지만 JavaScript 프로그램을 동시에 실행할 수 있습니다.

특징들

웹 워커는 메시지 전달을 통해 기본 문서와 상호 작용합니다.다음 코드는 지정된 파일에서 JavaScript를 실행하는 worker를 만듭니다.

변화하다 작업자 = 신규 작업자("worker_script.disples"); 

작업자에게 메시지를 발송하려면postMessageworker 객체의 method는 다음과 같이 사용됩니다.

작업자.포스트 메시지('헬로 월드'); 

onmessage속성은 이벤트 핸들러를 사용하여 워커에서 정보를 가져옵니다.

작업자.메시지 = 기능.(이벤트) {  경계.("메시지 수신" + 이벤트.데이터.);  어떻게 좀 해봐.(); }   기능. 어떻게 좀 해봐.() {  //일을 하다  작업자.포스트 메시지("작업 완료!"); }  작업자.종료하다(); 

워커가 종료되면 워커는 범위를 벗어나 참조 변수가 정의되지 않습니다.이 시점에서 필요에 따라 새로운 워커를 작성해야 합니다.

웹 워커의 가장 간단한 사용은 사용자 인터페이스를 중단하지 않고 계산 비용이 많이 드는 작업을 수행하는 것입니다.

이 예에서 메인 문서는 웹 워커를 생성하여 소수를 계산하고 가장 최근에 발견된 소수를 순차적으로 표시합니다.

메인 페이지는 다음과 같습니다.

<!DOArmorPE html> <html> <제목> <title>워커 예: 원코어 연산 </title> </head> </body> <p>지금까지 발견된 최대 소수점은 <output id="result"></output><script>var worker = new Worker('worker.js'), worker.onmessage = 함수(이벤트) {document.getElementById(')'입니다.textContent = event.data; }; </script> </body> </body>

Worker()컨스트럭터 콜이 웹 워커를 생성하여worker웹 워커를 나타내는 오브젝트.웹 워커와의 통신에 사용됩니다.그 오브젝트는onmessage이벤트 핸들러를 사용하면 코드가 웹 워커로부터 메시지를 수신할 수 있습니다.

Web Worker 자체는 다음과 같습니다.

변화하다 n = 1; 변화하다 end_value = 10**7; 서치: 하는 동안에 (n <=> end_value) {   n++;   위해서 (변화하다 i = 2; i <=> 수학.sqrt(n); i++)     한다면 (n % i == 0)       계속하다. 서치;   // 프라임을 찾았습니다!   포스트 메시지(n); } 

메시지를 페이지로 되돌리려면postMessage()prime이 [1]발견되었을 때 메시지를 게시하기 위해 사용됩니다.

지지하다

브라우저가 웹 워커를 지원하는 경우 Worker 속성은 글로벌 창 [3]개체에서 사용할 수 있습니다.브라우저가 Worker 속성을 지원하지 않는 경우 Worker 속성은 정의되지 않습니다.

다음 예제에서는 브라우저에서 웹 워커의 지원을 코드 체크합니다.

기능. 브라우저 지원 WebWorkers() {   돌아가다 유형 윈도.작업자 === "기능'; } 

웹 워커는 현재 Chrome, Opera, Edge, Internet Explorer(버전 10), Mozilla Firefox [4][5][6]Safari에서 지원됩니다.iOS용 모바일 Safari는 iOS 5부터 웹 워커를 지원했습니다.Android 브라우저는 처음에 Android 2.1에서 웹 워커를 지원했지만 Android 버전 2.2-4.3에서 지원이 제거된 후 Android 4.[7][8]4에서 복구되었습니다.

레퍼런스

  1. ^ a b c d Web Workers, WHATWG, retrieved 3 June 2010
  2. ^ "HTML Living Standard". Html.spec.whatwg.org. 30 January 2017. Retrieved 31 January 2017.
  3. ^ "HTML5 Up and Running" 마크 필그림입니다오라일리/구글 프레스2010년 8월
  4. ^ "HTML5 소개", Lawson, B. 및 Sharp, R., 2011.
  5. ^ "HTML5와 CSS3" Brian P.호건, 실용 프로그래머, LLC 2010
  6. ^ "Can I Use... Web Worker". caniuse.com. Retrieved 30 September 2019.
  7. ^ "Archived copy". Archived from the original on 19 October 2013. Retrieved 10 July 2011.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  8. ^ "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 10 June 2017.

외부 링크