Worker
Web Workers API의 Worker
인터페이스는 스크립트로 생성하고, 생성자와 메시지로 통신하는 백그라운드 작업을 나타냅니다. 워커의 생성은 Worker("path/to/worker/script")
생성자를 통해 할 수 있습니다.
워커는 부모 페이지와 같은 출처에 호스팅 된 다른 워커를 생성할 수 있습니다. (참고: WebKit은 아직 중첩 워커를 구현하지 않았습니다.)
Worker
내에서 사용할 수 있는 인터페이스와 함수는 제한돼있습니다. 워커는 XMLHttpRequest
를 사용해 네트워크 통신을 할 수 있지만, 응답의 responseXML
과 channel
특성은 항상 null
입니다. (fetch
는 이러한 제한 없이 사용할 수 있습니다.)
생성자
속성
부모 EventTarget
에서 속성을 상속하고, AbstractWorker
의 속성을 구현합니다.
이벤트 처리기
AbstractWorker.onerror
-
error
유형의ErrorEvent
가 워커로 확산되면 호출할EventListener
입니다.AbstractWorker
에서 상속합니다. Worker.onmessage
-
message
유형의MessageEvent
가 워커로 확산되면, 즉DedicatedWorkerGlobalScope.postMessage
를 통해 워커에서 부모 문서로 메시지를 전송하면 호출할EventListener
입니다. 메시지는data
속성에 들어있습니다. Worker.onmessageerror
-
messageerror
이벤트가 발생하면 호출할 이벤트 처리기입니다.
메서드
부모 EventTarget
에서 메서드를 상속하고, AbstractWorker
의 메서드를 구현합니다.
Worker.postMessage()
-
워커의 내부 범위로 메시지를 전송합니다. 메시지는 임의의 JavaScript 객체입니다.
Worker.terminate()
-
워커를 즉시 종료합니다. 현재 워커가 연산을 진행 중이더라도 완료를 기다리지 않습니다.
ServiceWorker
인스턴스는 이 메서드를 지원하지 않습니다.
이벤트
message
-
워커의 부모가 워커로부터 메시지를 수신했을 대 발생합니다.
onmessage
속성에서도 사용 가능합니다. messageerror
-
Worker
객체가 역직렬화 할 수 없는 객체를 메시지로 받았을 대 발생합니다.onmessageerror
속성에서도 사용 가능합니다. rejectionhandled
-
Promise
가 거부될 때마다 발생합니다. 거부를 처리할 처리기의 존재 유무는 고려하지 않습니다.onrejectionhandled
속성에서도 사용 가능합니다. unhandledrejection
-
Promise
가 거부됐는데, 처리할 처리기가 없을 때 발생합니다.onunhandledrejection
속성에서도 사용 가능합니다.
예제
다음 코드 조각은 Worker()
생성자를 사용해 Worker
객체를 생성한 후, 그 Worker
를 사용합니다.
var myWorker = new Worker("worker.js");
var first = document.querySelector("#number1");
first.onchange = function () {
myWorker.postMessage([first.value, second.value]);
console.log("Message posted to worker");
};
전체 예제를 보시려면 저희의 simple-web-worker 예제 (라이브)를 참고하세요.
명세
Specification |
---|
HTML Standard # dedicated-workers-and-the-worker-interface |
브라우저 호환성
BCD tables only load in the browser
워커의 종류마다 지원 상황이 다릅니다. 각각의 페이지를 방문해 더 자세히 알아보세요.
교차 출처에서의 워커 오류 동작
초기 명세에서는 교차 출처 워커 스크립트를 불러오려 시도하면 SecurityError
가 발생했습니다. 요즘은 오류 대신 error
이벤트가 발생합니다.
같이 보기
- 웹 워커 사용하기
- 워커에서 사용할 수 있는 함수와 클래스
- 다른 종류의 워커:
SharedWorker
와 서비스 워커.