Web Workers(웹 작업자)란?
페이지 성능에 영향을 주지 않고 다른 스크립트와 독립적으로 백그라운드에서 실행되는 JavaScript입니다
HTML 페이지에서 스크립트를 실행하면 스크립트가 완료될 때까지 페이지가 응답하지 않습니다.
웹 작업자가 백그라운드에서 실행되는 동안 클릭, 항목 선택 등 원하는 모든 작업을 계속할 수 있습니다.
웹 작업자의 간단한 예시이다.
<!DOCTYPE html>
<html>
<body>
<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
<p><strong>Note:</strong> Internet Explorer 9 and earlier versions do not support Web Workers.</p>
<script>
var w;
function startWorker() {
if(typeof(Worker) !== "undefined") {
if(typeof(w) == "undefined") {
w = new Worker("demo_workers.js");
}
w.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data;
};
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Workers...";
}
}
function stopWorker() {
w.terminate();
w = undefined;
}
</script>
</body>
</html>
예시 설명
웹 작업자 "demo_workers.js" 파일
이러한 js파일이 웹 작업자 파일이라 생각하면 된다.
postMessage() : HTML 페이지에 다시 메시지를 게시하는 데 사용되는 메서드
var i = 0;
function timedCount() {
i = i + 1;
postMessage(i);
setTimeout("timedCount()",500);
}
timedCount();
web worker의 "onmessage" 이벤트
웹 작업자로부터 메시지를 보내고 받을 수 있습니다.
w.terminate();
웹 작업자를 종료하고 브라우저/컴퓨터 리소스를 확보
웹 작업자 재사용
작업자 변수를 정의되지 않은 것으로 설정하면 종료된 후 코드를 재사용할 수 있다.
w = undefined;
웹 작업자는 외부 파일에 있으므로
다음 JavaScript 객체에 액세스할 수 없습니다.
- The window object
- The document object
- The parent object
'Web > HTML' 카테고리의 다른 글
HTML SSE API (0) | 2023.01.04 |
---|---|
HTML 웹 저장소 API (0) | 2023.01.04 |
HTML 드래그 앤 드롭 API (0) | 2023.01.04 |
HTML 위치 정보 API (0) | 2023.01.03 |
HTML 플러그인 (0) | 2023.01.03 |